8.3.3 字符数组的输入和输出

在采用字符串方式后,字符数组的输入、输出将变得更加简单方便。在C语言中,字符数组有如下两种的输入、输出方法。

1.使用“%c”逐个输出

除了前面介绍的字符串赋初值方法外,还可用printf函数和scanf函数一次性输出或输入一个字符数组中的字符串,而不必使用循环语句逐个地输入或输出每个字符。例如:

    char str [9];
    sacnf("%c, &str[0]");

使用printf函数可以输出一个或几个数组元素。例如:

    printf ("%c", str[0]);

2.使用“%s”逐串输出

使用如下格式可以依次输入一个字符串。

    scanf ("%s", str);

例如:

    char s1[25];
    scanf("%s", s1); /*用字符数组接收字符串时必须写字符数组名*/

如果键盘输入为:

12345 97890

然后按Enter键并换行,则s1中的字符串为:

12345

如果键盘输入为:

1234597890

然后按Enter键并换行,则s1中的字符串为:

1234597890

执行下面的代码:

    char s2[25]={"12345"};
    printf("%s", s2); /*输出字符数组时字符串也应写成字符数组名*/

输出结果为:

12345

执行下面的代码:

    char s3[25]={'1', '2', '\0', '3', '4', '5'};
    printf("%s", s3);

输出结果为:

    12

虽然在s3中’\0’后还有字符,但是用“%s”格式只能输出到字符串结束标记。

实例8-5

提示用户输入两个字符串,然后输出较大者

源码路径daima\8\8-5

字符串大小比较的规则是:字符串从前向后逐字符进行比较,若字符大则字符串就大,例如abc小于cbc。如果长度不相同,但是前面字符相同,则长的字符串大,例如abc小于abce。本实例的实现文件为“bijiao.c”,具体实现代码如下。

    #include"stdio.h"
    int main(void){
        char a[80], b[80], jibie=' ';               /*置标记jibie为空格符*/
        int i=0;                                    /*置开始的下标为0*/
        printf("string1:"); scanf("%s", a);         /*输入第1个字符串并存入数组a*/
        printf("string2:"); scanf("%s", b);         /*输入第2个字符串并存入数组b*/
        while((a[i]! ='\0')||(b[i]! ='\0'))         /*当前字符有一个’\0’则退出循环*/
        {
        if(a[i]<b[i])
                {     jibie='b';
                      break;
                }  /*b字符串大则设标记’b’退出循环*/
                else if(b[i]<a[i])
                {     jibie='a';
                      break;
                }  /*a字符串大则设标记’a’退出循环*/
                else i++; /*当前字符相等则修改下标后继
续循环*/
          }
        if(jibie==' ') /*由于当前字符为’\0’而退出循环的,
则短字符串为小*/
                if(a=='\0')
                      jibie ='b';             /*a串短,b串大,设置标记为’b'*/
                else
                      jibie='a';              /*b串短,a串大,设置标记为’a'*/
        if(jibie=='a')
                printf("big-string: %s\n", a);
        else
                printf("big-string: %s\n", b);
        getch();
    }

拓展范例及视频二维码

范例8-5-01:下三角的问题

源码路径:演练范例\8-5-01\

范例8-5-02:二维数组每一行的最大值

源码路径:演练范例\8-5-02\

程序运行后先提示用户输入两个字符串,输入完毕并按下Enter键后将比较这两个字符串的大小,并输出长度较大的字符串,如图8-5所示。

图8-5 运行结果