我可以使用 fscanf 读取 file.txt 中的字符数组和用逗号分隔的整数吗(在 C 中)
Can I use fscanf to read a character array and an integer seperated with a comma in my file.txt (in C)
我不太了解 C 中的文件处理。在我的 file.txt
中,第一行是这样的:
25031470760,1234
我想单独阅读它们,例如:
FILE* filep = fopen("myfile.txt","r");
char id[20];
int password;
fscanf(filep,"%s,%d");
我想要 id = 25031470760
和 password = 1234
但是当我打印它们时:
printf("%s %d",id,password);
输出是荒谬的:25031470760,1234 2201625031470760,1234 22016
非常感谢您的帮助。
fscanf(filep,"%s,%d");
以各种方式失败。
无宽度限制
"%s"
可能会超限。使用宽度限制
char id[20];
...
fscanf(filep,"%19s,%d");
不会在 ,
停止
"%s"
将读取并保存 ','
。考虑 " %[^,\n]"
1) 跳过前导 white-space,然后 2) 保存所有 non-comma、non-end-of-line 个字符。
fscanf(filep," %19[^,\n],%d");
检查return值
if (fscanf(filep," %19[^,\n],%d") == 2) {
Success();
} else {
Fail();
}
缺少 fopen()
成功检查
FILE* filep = fopen("myfile.txt","r");
if (filep == NULL) {
puts("File to open");
return fail; // Illustrative code.
}
可能是其他问题
鉴于 OP 的 2 个输出,我怀疑 Why is “while ( !feof (file) )” always wrong?。
我不太了解 C 中的文件处理。在我的 file.txt
中,第一行是这样的:
25031470760,1234
我想单独阅读它们,例如:
FILE* filep = fopen("myfile.txt","r");
char id[20];
int password;
fscanf(filep,"%s,%d");
我想要 id = 25031470760
和 password = 1234
但是当我打印它们时:
printf("%s %d",id,password);
输出是荒谬的:25031470760,1234 2201625031470760,1234 22016
非常感谢您的帮助。
fscanf(filep,"%s,%d");
以各种方式失败。
无宽度限制
"%s"
可能会超限。使用宽度限制
char id[20];
...
fscanf(filep,"%19s,%d");
不会在 ,
"%s"
将读取并保存 ','
。考虑 " %[^,\n]"
1) 跳过前导 white-space,然后 2) 保存所有 non-comma、non-end-of-line 个字符。
fscanf(filep," %19[^,\n],%d");
检查return值
if (fscanf(filep," %19[^,\n],%d") == 2) {
Success();
} else {
Fail();
}
缺少 fopen()
成功检查
FILE* filep = fopen("myfile.txt","r");
if (filep == NULL) {
puts("File to open");
return fail; // Illustrative code.
}
可能是其他问题
鉴于 OP 的 2 个输出,我怀疑 Why is “while ( !feof (file) )” always wrong?。