【发布时间】:2013-11-10 04:33:30
【问题描述】:
我有一个结构数组,它们被保存到一个文件中。目前文件中有两行:
a a 1
b b 2
我正在尝试读取文件并将数据保存到结构中:
typedef struct book{
char number[11];//10 numbers
char first[21]; //20 char first/last name
char last[21];
} info;
info info1[500]
into num = 0;
pRead = fopen("phone_book.dat", "r");
if ( pRead == NULL ){
printf("\nFile cannot be opened\n");
}
else{
while ( !feof(pRead) ) {
fscanf(pRead, "%s%s%s", info1[num].first, info1[num].last, info1[num].number);
printf{"%s%s%s",info1[num].first, info1[num].last, info1[num].number); //this prints statement works fine
num++;
}
}
//if I add a print statement after all that I get windows directory and junk code.
这让我觉得这些项目没有被保存到结构中。任何帮助都会很棒。谢谢!
编辑:好的,它确实可以很好地保存它,但是当我将它传递给我的函数时,它会给我垃圾代码。
当我调用它时:
sho(num, book);
我的表演功能:
void sho (int nume, info* info2){
printf("\n\n\nfirst after passed= %s\n\n\n", info2[0].first); //i put 0 to see the first entry
}
【问题讨论】:
-
1) 什么是
into? 2)printf{是语法错误,不能正常工作。 -
你能用文本编辑器打开文件“phone_book.dat”吗?
-
请提供您真正使用的代码。它不能是您显示的代码,因为由于各种原因无法编译。
-
这不是
feof()的正确使用方式;您还需要错误检查对fscanf()的调用。 -
是的,我试图缩短我的代码来问这个问题对不起。