gpt4 book ai didi

c - 包含整数和字符的 fscanf 格式

转载 作者:行者123 更新时间:2023-11-30 14:42:52 25 4
gpt4 key购买 nike

我必须读取文件并获取分数(分子、分母和数学符号)
这是输入文件:

1\4 + 1\3
2\5 - 6\13

我的部分代码:

int numer1[100], numer2[100], denom1[100], denom2[100];
char ope[100];
do{
checkScan = fscanf(fin, "%d %d %s %d %d", &numer1[line], &denom1[line], &ope[line], &numer2[line], &denom2[line]);
printf("%d %d %s %d %d\n", numer1[line], denom1[line], ope[line], numer2[line], denom2[line]);
if(checkScan==EOF){
printf("End of file\n");
break;
}
if(checkScan!=5){
printf("Not enough data or invalid data\n");
}
line++;
}while(1);

最佳答案

替换

checkScan = fscanf(fin, "%d %d %s %d %d", &numer1[line], &denom1[line], &ope[line], &numer2[line], &denom2[line]);

checkScan = fscanf(fin, "%d\\%d %c %d\\%d", &numer1[line], &denom1[line], &ope[line], &numer2[line], &denom2[line]);

补充说明:

  • 您还需要仅在 checkScan==5 时执行 printf,否则您不知道打印的内容

  • 仅当输入正确时,您还需要增加

  • 您需要检查是否为< 100

  • 如果输入字符串不遵循模式,您将无限循环。我鼓励您首先阅读该行,然后解析它。

总结我所有的言论:

char readLine[100];
int numer1[100], numer2[100], denom1[100], denom2[100];
char ope[100];

while (fgets(readLine, sizeof(readLine), fin)) {
int checkScan = sscanf(readLine, "%d\\%d %c %d\\%d", &numer1[line], &denom1[line], &ope[line], &numer2[line], &denom2[line]);

if(checkScan!=5){
printf("Not enough data or invalid data\n");
}
else {
printf("%d %d %c %d %d\n", numer1[line], denom1[line], ope[line], numer2[line], denom2[line]);
if (++line == 100)
break;
}
}
<小时/>

注意:使用\而不是/来表示分数是很奇怪的

关于c - 包含整数和字符的 fscanf 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54286975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com