scanf如何("%[^ \ n]",str);在C编程工作?

时间:2016-10-14 08:30:47

标签: c string

我在C程序中遇到过这个问题:

  if (txtInfo == "Présenter"){
          m_appState = 8;
          m_appStateString = AppStatesArray[m_appState];
      }

else {
        m_appState = -1;
        m_appStateString = "UNKNOWN";
    }

请解释它是如何工作的以及为什么?

2 个答案:

答案 0 :(得分:7)

scanf格式字符串由两部分组成:

  • 一个空格字符,它会在输入中跳过空格字符(' ''\t''\n'等等)
  • %[^\n]转换规范,它匹配不等于新行字符('\n')的所有字符的字符串并存储它(加上终止{{1在'\0'
  • 中。}}

但请注意,如果输入(在前导空格之后,在第一个换行符之前)超过99个字符,则此函数会显示未定义的行为,因为str只能容纳100 str个包括终止char字符。更安全的选择是:

'\0'

答案 1 :(得分:1)

[^\n]搜索换行符

因此它会扫描字符串,直到按下