gpt4 book ai didi

c - 如何中断使用 fgets()、使用 scanf ("%s"读取的字符串,..)

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

我正在开发一个程序,该程序采用数学表达式,将其转换为后缀表示法,然后求解它。

首先,我检查表达式以查看其格式是否正确(左括号和括号与右括号匹配)。为了进行检查,我使用了 fgets() 来获取字符串,因为据我所知它会忽略空格。

现在,当出现空格时,我必须中断字符串,但是对于这部分,使用 do while 使用 scanf( "%s"的缓冲区) 会更容易,...)

有什么方法可以让我使用 scanf 技巧来破坏字符串,部分地处理 int 而无需再次读取它?

最佳答案

您可以使用 sscanf() 前进通过 fgets() 读取的缓冲区
%n 将接收扫描使用的字符数。添加 using 到偏移量将使扫描提前通过缓冲区。

int offset = 0;
int used = 0;
char line[1000];
char item[200];
fgets ( line, sizeof ( line), stdin);
while ( ( sscanf ( line + offset, "%199s%n", item, &used)) == 1) {
offset += used;
// do something with item
}

关于c - 如何中断使用 fgets()、使用 scanf ("%s"读取的字符串,..),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30080022/

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