C语言求救:文件调用的方法

#include<iostream>
#include<stdio.h>
struct st_cusacc
{
char accId[11];
char name[21];
char Passwd[7];
};
int main()
{
struct st_cusacc openCA[2];
FILE *fp=fopen("test1.txt","rb");
fread(openCA,sizeof(struct st_cusacc),2,fp);
fclose(fp);
printf(fp,"%s|%s|%s\r\n",openCA[1].accId,openCA[1].name,openCA[1].Passwd);

system("pause");
return 0;
}

我的文件存在,但是一直不能调用……求大神帮忙!
外部文件是一个账号,姓名,密码的一个TXT文件如:17178|sdw|1234
前面的大文件我就不发了……主要就是这里不懂

第1个回答  2015-01-06
你这个程序,要求test1.txt和你的可执行文件放到一个目录下才能打开文件,因为你打开文件时没有指定目录。一般fopen打开文件后都需要检查一下文件指针是否为空的,否则因为文件不存在等原因导致fopen失败可能导致程序走到下面实用文件指针时直接core dump。

另外,你fread直接读取一个结构体,这样的话,要求你的文件是通过fwrite直接写结构体,否则可能导致读出来的数据格式乱了,并且这个文件应该是个二进制文件而不是文本文件吧?追问

文件在一起,而且,以前训练的文件也是这么编的啊

第2个回答  2015-01-06
//#include<iostream> C语言可以不用这个
#include<stdio.h>
struct st_cusacc
{
    char accId[11];
    char name[21];
    char Passwd[7];
};
int main()
{
    struct st_cusacc openCA[2];
    FILE *fp=fopen("test1.txt","rb");
if ( fp==NULL ) //加上这个,确保文件不在时,会报错!
{
printf("file not found!\n");
return -1;
}
fread(openCA,sizeof(struct st_cusacc),2,fp);
    fclose(fp);
    printf("%s|%s|%s\r\n",openCA[1].accId,openCA[1].name,openCA[1].Passwd);//参数多了fp

system("pause");
    return 0;
}

追问

现在可以运行,但是文件调用不了是怎么回事?
还有,大神私聊可好?!

追答

运行图贴上来,看看再说

追问

已私信,查收

追答

已回信

本回答被提问者采纳
第3个回答  2015-01-06
这是c么,iostream是c++的.#include<iostream.h>或#include<iostream> using namespace std;追问

差不多意思啊……头文件不重要,还是主程序比较重要…………