C 语言:如何读取这样的输入 "SomeWord(Int)",没有空格,只有一个单词,然后是圆括号内的数字

C language: How do I read an input like this "SomeWord(Int)", with no spaces, just a word and then a number inside round brackets

我需要从单行用户那里获取输入,并且有 5 个值,我从该输入中提取了这些值('c' 需要为 5)。输入是这样的格式:“word(number)number word sentence”。但问题出在“word(number)”输入区。我无法获取它,因此无法从输入的那部分读取值并将其存储在命令和 num1 中。下面是我试过的代码,但它似乎不起作用。

c = sscanf (line, "%s(%d) %d %s %128[^\n]", command, num1, num2, message, message2);

当我让用户输入“word (number) number word sentence”时,在括号前加上 space,同时更改从 %s(%d)%s (%d) 的代码似乎有效。但我需要它,值 commandnum1 之间没有任何 space。

您需要从第一个字符串中排除括号。假设“命令”是严格的字母数字和下划线,你可以这样做:

c = sscanf(line, "%[_a-zA-Z0-9](%d) %d %s %128[^\n]", command, &num1, &num2, message, message2);

此外,您需要在 num1num2 上使用 & 符号;也许那些是错别字?

为了安全起见,您应该像 message2 一样对 commandmessage 设置长度限制。假设 'char command[21], message[33];`,这将是:

"%20[_a-zA-Z0-9](%d) %d %32s %128[^\n]"