【发布时间】:2019-10-02 09:19:53
【问题描述】:
我假设我有编译问题,但我想确保这不是我的错。
我已经将我的代码与我几天前制作的程序中的其他代码进行了比较,我确实找不到任何区别。
FILE *f;
f = fopen("gps.txt","r");
if (f == NULL){
printf("Couldn't open the file.");
return 0;
}
int i= 0;
int n;
while(fscanf(f,"%c %d %d %d %c %d %d %d %d %d %d",&gps[i].sirina,&gps[i].stepen,&gps[i].min,&gps[i].sek,&gps[i].duzina,&gps[i].s1,&gps[i].m1,&gps[i].sek1,&gps[i].visina,&gps[i].brzina,&gps[i].sateliti)==11)
i++;
n = i;
printf("%d",gps[1].sek);
文件信息:(25 55 22 N 123 213 123 S 25 23 2
123 123 123 N 234 25 53 S 123 5 1
12 41 3 N 12 5 13 S 1 2 4)
此代码的结果始终为 0(这只是为了检查我是否可以继续执行我的程序)。文件中写入了信息,我仔细检查了我每次都保存了它,但我的程序仍然输出 0。在我几天前编写的相同代码上,输出没问题,包括文件相同的事实。
我很高兴知道是否存在编译问题或者我的代码中是否存在错误。谢谢!
【问题讨论】:
-
如果您要读取文件的内容,请查看
fread函数而不是fscanf。 -
一个可能的问题是
fscanf格式以%c开头。此格式说明符不跳过前导空格,例如结束前一行的换行符。在格式字符串中添加前导空格。 -
我假设您的意思是“
fopen的结果始终为 0”。这意味着找不到该文件。您可能需要添加路径信息。 -
根据问题发生的位置,请edit您对文件内容或编写文件的代码提出问题。如果您提供minimal reproducible example,它会让您更愿意访问。请收下tour 和学习How to Ask。
-
我应该制作一个程序,我应该从文件中读取,例如,所有这些中的最大数字,所以我要求通过循环来做到这一点。如果你能理解我的话,这不仅仅是纯粹的阅读。 @LouisDurand