C语言scanf函数输入字符串会自动加终止符吗?
C语言scanf函数输入字符串会自动加终止符吗?
是的,当使用scanf('%s', &str)来输入一个字符串时,C语言会在字符串的末尾自动添加null终止符('\0')。
这是因为%s格式指示符会告诉scanf函数在遇到空白字符(空格、制表符、换行符等)时停止读取,并在读取到的字符串末尾添加null终止符,以便程序将其识别为一个合法的字符串。
所以,您无需手动添加null终止符,scanf函数会为您完成这个操作。
以下是一个示例:
#include <stdio.h>
int main() {
char str[100];
printf('Enter a string: ');
scanf('%s', &str);
printf('Input string: %s\n', str);
return 0;
}
在这个示例中,用户输入的字符串将被存储在字符数组str中,并且scanf函数会自动在输入的字符串末尾添加null终止符。然后,我们可以在后续的代码中使用该字符串,并且不需要手动添加null终止符。
需要注意的是: scanf('%s', &str) 这种写法存在缓冲区溢出的风险,如果用户输入的字符串长度超过了数组 str 的长度,就会导致程序崩溃。为了避免这种情况,建议使用 fgets 函数来安全地读取字符串。
原文地址: http://www.cveoy.top/t/topic/GA9 著作权归作者所有。请勿转载和采集!