我在C程序中遇到过这个问题:
if (txtInfo == "Présenter"){
m_appState = 8;
m_appStateString = AppStatesArray[m_appState];
}
else {
m_appState = -1;
m_appStateString = "UNKNOWN";
}
请解释它是如何工作的以及为什么?
答案 0 :(得分:7)
此scanf
格式字符串由两部分组成:
' '
,'\t'
,'\n'
等等)%[^\n]
转换规范,它匹配不等于新行字符('\n'
)的所有字符的字符串并存储它(加上终止{{1在'\0'
。但请注意,如果输入(在前导空格之后,在第一个换行符之前)超过99个字符,则此函数会显示未定义的行为,因为str
只能容纳100 str
个包括终止char
字符。更安全的选择是:
'\0'
答案 1 :(得分:1)
[^\n]
搜索换行符
因此它会扫描字符串,直到按下