我在用C打开文件时遇到问题
我假设我有编译问题,但我想确定这不是我的错 我将我的代码与前几天我制作的一个程序中的其他代码进行了比较,实际上我没有发现任何差异我在用C打开文件时遇到问题,c,file,fopen,C,File,Fopen,我假设我有编译问题,但我想确定这不是我的错 我将我的代码与前几天我制作的一个程序中的其他代码进行了比较,实际上我没有发现任何差异 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]
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 N 234 25 53 S 123 5 1
12 41 3 N 12 5 13 S 1 2 4)
这段代码的结果总是0(这只是为了检查我是否可以继续执行我的程序)。文件中写入了一些信息,我反复检查是否每次都保存了这些信息,但我的程序仍然输出0。在我几天前编写的同一代码中,输出是正常的,包括文件是相同的
我很乐意知道是否有编译问题,或者我的代码中是否有错误。谢谢 根据您的输入,fscanf中的字符串是错误的。 您可以使用以下字符串:
%c %d %d %d %c %d %d %d %d %d %d"
%d %d %d %[^A-Z] %c %d %d %d %[^A-Z] %c %d %d %d
这是输入行的示例:
25 55 22 N 123 213 123 S 25 23 2
您需要以下字符串:
%c %d %d %d %c %d %d %d %d %d %d"
%d %d %d %[^A-Z] %c %d %d %d %[^A-Z] %c %d %d %d
根据给定的示例,使用%d读取25,55,22
然后使用%[^A-Z]
跳过空格等,然后使用%c
读取N或S。
空格也是一个字符,你需要注意它。如果你想读取文件的内容,请查看
fread
函数而不是fscanf
。一个可能的问题是fscanf
格式以%c
开头。此格式说明符不会跳过前导空格,例如前一行结尾的换行符。在格式字符串中添加前导空格。我假定您的意思是“fopen的结果始终为0”。这意味着找不到该文件。您可能需要添加路径信息。根据问题发生的位置,请使用文件内容或编写文件的代码回答您的问题。如果你能提供一个更好的服务,它会让你更愿意成为访客。请拿ans学习。我应该做一个程序,在那里我应该从文件中读取,例如,所有文件中最大的一个,所以我请求通过循环来完成。如果你能理解我的话,这不仅仅是单纯的阅读@LouisDurandTrue,但是你需要存储%[^A-Z]
的结果,不能用%s
代替%[^A-Z]%c
?我猜他想得到北或南AKA N/s,而不是所有的空格等。使用%[^A-Z],你不需要保存它。