gpt4 book ai didi

C - 在读取文件上的数字时,有没有办法区分单位、十几个或几百?

转载 作者:行者123 更新时间:2023-11-30 16:19:18 25 4
gpt4 key购买 nike

我的程序需要读取一个文件,该文件指示它是否必须将数字入队、出队或完成程序。

我有一个 .txt 文件,如下所示:

E    10
E 2
E 300
D
D
D
E 40
E 50
T

所以,E 说“嘿,你已经将一些东西排入队列”(第一行是 10),D 说“嘿,让队列前面的人出队”,T 说“嘿,让所有人出队,释放内存,仅此而已”

我尝试使用 getc 但它获取每个字符,输出是:

E

1
0

使用fgets我得到了这条线,这不是我想要的。

我想要的是一种让程序理解 10(十进制)、2(单位)、300(百位)之间差异的方法。我怎样才能得到E而不是跳转空白,然后得到10(而不是1然后0) ?有没有一个函数可以做到这一点?

观察:带有输入的文件无法更改,必须是这样。

最佳答案

你可以这样做:

char c;
while (fscanf(fp, " %c", &c) == 1) {
switch (c) {
case 'E': {
int n;
if (fscanf(fp, "%d", &n) != 1) {
input error; handle it
}
enqueue(n);
break;
}
case 'D':
dequeue();
break;
case 'T':
destroy_queue();
break;
default:
unknown command; handle error
}
}
if (ferror(fp)) {
input failed; handle error
}

请注意,从技术上讲,这将解析您所描述的文件格式的超集。特别是,它不关心行边界或格式:

E1D

D E

2 E 3E
4 D
D

完全可以接受,并且待遇与

相同
E   1
D
D
E 2
E 3
E 4
D
D

fscanf 用于所有输入。 "%c" 跳过可能存在的任何空白,然后读取单个字符。特别是,在第一行之后总是有我们必须跳过的空格:前一行末尾的 \n

"%d" 隐式跳过任何空格并读取整数(十进制格式)。

关于C - 在读取文件上的数字时,有没有办法区分单位、十几个或几百?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55666221/

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