字符串是由两个以上字符组成,字符串末端一定是“\0”字符。使用前必须声明字符串变量,声明方式如下:
char字符串变量[字符串长度];
注1 更完整的数组知识将在第7章说明。
注2 更完整的字符串知识将在第8章说明。
实例: 声明mystr是长度为10的字符串。
char mystr[10];
这时所声明的内存内容如下。
使用scanf( )函数读取字符串的格式如下:
scanf("%s", mystr)
执行上述指令时,scanf( )函数会从第一个非空格符开始读取,然后读到空格符为止。此外,读取字符串时,字符串变量左边不用加上“&”符号。
程序实例 ch3_22.c:读取字符串的应用。
上述执行结果左边是没有预留空格的输入,右边是空了4格的输入,所得到的结果都是一样的,这是因为scanf( )函数在读取字符串时会从第一个非空格符开始读取。
经过上述读取后,这时name字符串的内存内容如下所示。
使用scanf( )函数读取数字时,也是会读取第一个非空白的字符,此非空白的字符必须是数字,至于数字后边的字符则会忽略。
程序实例 ch3_23.c:读取数字,此数字前面有空格符,数字后面有一般字符。
上述执行结果左边输入的内存图形如下。
上述执行结果右边输入的内存图形如下。
上述A字符虽然被忽略,但是会继续留在输入缓冲区内,下列程序可以读取此缓冲区内的数据。
程序实例 ch3_24.c:改良程序实例ch3_23.c,读取缓冲区内的数据。