我可以使用 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 = 25031470760password = 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?