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)
的代码似乎有效。但我需要它,值 command
和 num1
之间没有任何 space。
您需要从第一个字符串中排除括号。假设“命令”是严格的字母数字和下划线,你可以这样做:
c = sscanf(line, "%[_a-zA-Z0-9](%d) %d %s %128[^\n]", command, &num1, &num2, message, message2);
此外,您需要在 num1
和 num2
上使用 & 符号;也许那些是错别字?
为了安全起见,您应该像 message2
一样对 command
和 message
设置长度限制。假设 'char command[21], message[33];`,这将是:
"%20[_a-zA-Z0-9](%d) %d %32s %128[^\n]"
我需要从单行用户那里获取输入,并且有 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)
的代码似乎有效。但我需要它,值 command
和 num1
之间没有任何 space。
您需要从第一个字符串中排除括号。假设“命令”是严格的字母数字和下划线,你可以这样做:
c = sscanf(line, "%[_a-zA-Z0-9](%d) %d %s %128[^\n]", command, &num1, &num2, message, message2);
此外,您需要在 num1
和 num2
上使用 & 符号;也许那些是错别字?
为了安全起见,您应该像 message2
一样对 command
和 message
设置长度限制。假设 'char command[21], message[33];`,这将是:
"%20[_a-zA-Z0-9](%d) %d %32s %128[^\n]"