【发布时间】:2022-06-27 16:30:50
【问题描述】:
我正在尝试读取一个 txt 文件,获取一些信息并将其放入变量中,但我没有成功,因为我的 txt 文件的每一行都以一个字符开头,我需要跳过该字符。
输入文件:
T1, 3, 0
T2, 3, 1
T3, 2, 2
我需要忽略 T 并只取数字。我尝试在fscanf 中使用%*c,但没有成功。
int initialize()
{
int n, n1, n2, n3, i = 0;
FILE *fp;
fp = fopen("input.txt", "r");
if (fp == NULL)
{
printf("Error locating the file. Please try again!\n");
exit(1);
}
while (fscanf(fp, "%d, %d, %d", &n1, &n2, &n3) != EOF)
{
p[i] = n1;
if (p[i] > MAX)
{
printf("Woah! I am not a super computer. Please input upto 100 processes :)\n");
exit(1);
}
b[i] = n2;
a[i] = n3;
i++;
}
fclose(fp);
return i;
}
对不起,我来自巴西。
【问题讨论】:
-
while (fscanf(fp, "T%d,%d,%d", &n1, &n2, &n3) == 3) -
更好的是,首先是
fgets(),然后是sscanf()(或编写您自己的解析器)...更多更好地处理验证和/或错误. -
fscanf中的%*c无法跳过 T,因为%c不过滤空格并且正在读取前一个换行符。它需要一个空格,如" %*c"来忽略换行符。