首页 百科知识 字符数组的字符串可以整体输出吗

字符数组的字符串可以整体输出吗

时间:2024-10-16 百科知识 版权反馈
【摘要】:另一种通常是将整个字符数组作为一个整体来进行的,为此要使用scanf函数和printf函数的%s格式。此外,C语言还提供了gets和puts两个函数,可以更方便地进行字符串的输入和输出。定义word数组时,分配word的长度为7,而输入的字符串的字符数为7,因此要存储这个字符串需要的数组长度为8,这样就会发生错误。这是因为C语言在用printf的%s格式输出字符数组的值时,系统会从字符数组的第一个元素开始依次输出字符,直到遇到终止字符'\0',才会结束输出。

4.3.2 字符数组的输入/输出

字符数组的输入/输出有两种方式:

一种是像其他类型数组一样,依次使用%c格式进行数组元素的输入或输出,但使用起来很不方便。

另一种通常是将整个字符数组作为一个整体来进行的,为此要使用scanf函数和printf函数的%s格式。此外,C语言还提供了gets和puts两个函数,可以更方便地进行字符串的输入和输出。

1.输入字符串函数scanf和gets

使用scanf函数输入字符串,需要在scanf的格式字符串中使用%s,例如:

  scanf("%s", word);

用于从键盘输入一个字符串,存储到word数组中,该字符串从第一个非空白的字符开始,到第一个空白字符(空格、制表符或换行符)为止。系统自动为word加上'\0'结束标志。

也可以一次输入多个字符串,例如:

  scanf("%s%s", word, word1);

用于从键盘输入两个字符串,分别存储到word和word1数组中,这两个字符串之间需要使用空白字符分隔。

另外,也可以用gets函数来输入一个字符串,其一般形式为

  gets(字符数组名);

从终端输入一个字符串,存储到字符数组中,例如:

  gets(word);

用于从键盘输入一个字符串,存储到word数组中,该字符串由换行符以前的所有字符组成,系统也自动为这个字符串加上'\0'结束标志。

使用scanf函数和gets函数,需要注意:

1)在使用scanf和gets函数输入字符串时,都只需要直接指明相应的字符数组名即可,不需像输入普通变量那样,使用取地址运算符&。这是因为,在C语言中,数组名代表这个数组的首地址。例如,下面的语句就是错误的。

  scanf("%s", &word);

  gets(&word);

2)输入字符串前,必须先定义字符数组,且字符数组的长度必须大于要输入的字符串的长度;否则,会出现字符数组越界,在运行时出现不可预知的错误(而编译系统不会报告越界信息),例如:

  char word[ ]="abcdef"; scanf("%s", word);

如果输入为abcdefg,则运行时有可能出现如图4.3.4所示的错误(其中的内存地址与所使用的计算机的当前状态有关)。

img255

图4.3.4 字符串输入出错信息

定义word数组时,分配word的长度为7,而输入的字符串的字符数为7,因此要存储这个字符串需要的数组长度为8,这样就会发生错误。

3)要注意scanf函数和gets函数在读取字符串时的区别。由scanf函数读取字符串的功能可知,用scanf函数读取的字符串中是不包含空白字符的,因为它会忽略开始的空白字符,以后当再次读取到空白字符时,就会结束读取。而gets函数所读取的字符串则可以包含空格。在使用时,要进行合适的选择。

例如:

  char word[10];

  scanf("%s", word);

如果在键盘上输入abcd def,则word的值为"abcd"。而

  char word[10];

  gets(word);

如果在键盘上输入abcd def,则word的值为"abcd def"。

2.输出字符串函数printf和puts

使用printf函数输出字符串,需要使用%s格式,例如:

  printf("%s", word);

将字符数组word以字符串的形式输出。输出时,遇到结束标记'\0'就停止输出。

也可以一次输出多个字符串,例如:

  char word[ ]="abc", word1[ ]="def";

  printf("%s%s",word,word1);

的输出结果为abcdef

也可以使用puts函数来输出一个字符串,其格式为

  puts(字符数组名)

其作用是将一个字符串输出到终端,并在输出时将字符串结束标记'\0'转换成'\n',即输出完字符串后换行,例如:

  char word[ ]="abc", word1[ ]="def";

  puts(word); puts(word1);

的输出结果为

  abc

  def

使用printf函数,需要注意:

输出字符数组的值时,字符数组必须以'\0'结束,否则可能会显示很多其他字符。这是因为C语言在用printf的%s格式输出字符数组的值时,系统会从字符数组的第一个元素开始依次输出字符,直到遇到终止字符'\0',才会结束输出。

对于没有使用'\0'结束的字符数组,必须像其他类型的一维数组一样,使用循环依次输出其各个数组元素。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈