gpt4 book ai didi

c - 对不同类型的 `fscanf()` 使用 switch case

转载 作者:行者123 更新时间:2023-11-30 15:01:24 25 4
gpt4 key购买 nike

问题:

我编写了一个 C 程序,该程序应该循环遍历输入文件并在布局相同的表格中显示其表格内容,但与输入文件不同的是,输出的值应该位于漂亮的均匀选项卡式列中。

我正在阅读的文本文件包含以下内容:

name surname 123 4.2 f
sara dddd 222 3.2 f
dan ssss 1233 1.3 m
ann aaaa 443 2.2 f

但是输出是错误的:

output

请注意不需要的换行,其中应显示在最后一列中的值变成了下一行的第一列。

程序:

    int i, j;
char c;
double d;
char str[10];
char t[6]="ssidc"; //Encoded column types descriptor (e.g. string, string, int, double, char"

while(!feof(fa)) {

for(i = 0; i < 5; i++) {
switch(t[i]) {
case('s'):
fscanf(fa,"%s",str);
printf("%s\t",str);
break;
case('c'):
fscanf(fa,"%c",&c);
printf("%c\t",c);
break;
case('d'):
fscanf(fa,"%lf",&d);
printf("%.1lf\t",d);
break;
case('i'):
fscanf(fa,"%d",&j);
printf("%d\t",j);
break;
default:
break;
}
}
printf("\n");//new line
}

最佳答案

scanf("%c" 读取任何字符,但在调用它时当前位置位于空格上(您刚刚解析了一个 float ),然后将其读取为char。您需要通过提供扩展格式处理指令来跳过它:

fscanf(fa,"%*[ ]%c",&c);

阅读 scanf 手册以了解其工作原理。

关于c - 对不同类型的 `fscanf()` 使用 switch case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41415371/

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