scanf是C语言中非常常用的输入函数之一。它可以读取各种类型的数据,包括字符、整数和浮点数。本文将介绍如何使用scanf读取字符串。
读取单个单词字符串
scanf的%s格式指示符可以用于读取单个单词字符串。例如:
char str[100]; scanf(\"%s\", str);
上面的代码可以读取输入中的第一个单词字符串,并将其存储在str数组中。请注意,scanf将自动跳过任何前导空格,并在遇到下一个空格、制表符或换行符时停止读取。因此,它只能用于读取不包含空格的单词字符串。
读取带有空格的字符串
如果要读取包含空格的字符串,可以使用fgets函数。但是,在某些情况下,fgets可能没有scanf那么方便。在这种情况下,可以使用一些技巧,使scanf读取包含空格的字符串。
可以使用正则表达式来限制scanf格式指令的匹配范围。例如,如果要读取整个输入行,可以这样做:
char str[100]; scanf(\"%[^\ ]\", str);
上面的代码会一直读取,直到遇到换行符。 %[]指令告诉scanf匹配包含任何字符(除了换行符\ )的字符串,而不是只匹配特定字符。
读取多个字符串
scanf还可以读取多个字符串,每次读取一个。例如:
char str1[100], str2[100]; scanf(\"%s %s\", str1, str2);
上面的代码会读取输入中的前两个单词,将它们存储在str1和str2中。请注意,scanf将在任何非空白字符(包括空格、制表符和换行符)之前停止读取。
请注意,scanf不会读取输入行的剩余部分。如果您需要读取整个行,应该使用fgets。
在本文中,我们介绍了如何使用scanf读取字符串。无论您是需要读取单个单词字符串,还是带有空格的字符串,还是多个字符串,scanf都能应对。 scanf是一个功能强大的函数,值得掌握。