C语言:字符数组的输入输出

您所在的位置:网站首页 c语言中字符串数组 C语言:字符数组的输入输出

C语言:字符数组的输入输出

2023-08-09 18:14| 来源: 网络整理| 查看: 265

用printf输出

输出方法1:printf 逐个字符输出。 

void main(void){     char c[ ] = "I am happy";      int i;

    for(i =0; i < 10; i++){         printf("%c", c[i]);     }     printf("\n");

}

输出方法2:printf 将整个字符串一次输出。

void main(void){     char c[ ] = "I am happy";           printf("%s", c);   //必须得是字符数组名,c.

}

用scanf输入

如果scanf中%d是连着写的如“%d%d%d”,在输入数据时,数据之间不可以用逗号分隔,只能用空白字符(空格或tab键或者回车键)分隔——“2 (空格)3(tab) 4” 或 “2(tab)3(回车)4”等。若是“%d,%d,%d”,则在输入数据时需要加“,”,如“2,3,4”。

输入方法1:scanf 逐个字符输入。

void main(void){     char c[10];     int i;          printf("请输入多个字符(不多于10个):");     for(i = 0; i < 10; i++){         scanf("%c", &c[i]);     }      printf("输入的多个字符为:%s", c);      }

输入方法2:scanf 输入一个字符串。

void main(void){     char c[10];          printf("请输入多个字符(不多于10个):");     scanf("%s", c);

    printf("输入的多个字符为:%s", c);      }

 scanf("%s", c);

//系统自动在China后面加一个'\0'结束符。

printf("%s", c);

//按字符数组名c找到其数组起始地址,然后逐个输出其中的字符,直到遇到'\0'为止。

为什么只输出一个anan呢?

由于系统把空格字符作为输入的字符串之间的分隔符,因此只将空格前的字符anan送到数组c中。

//数组中未被赋值的元素的值自动置'\0'。

由于把"anan"作为一个字符串处理,故在其后加'\0。c数组状态如下:

0

1

2

3

4

5

6

7

8

9

a

n

a

n

\0

\0

\0

\0

\0

\0

内存格式不是书上说的那种?Why?

输入方法3:scanf 输入多个字符串。

void main(void){     char c1[10], c2[10], c3[10], c4[10];          printf("请输入一个字符串(有四个单词,每个不多于10个字母):");

//这个注释好像有点问题,按照理解,应该是一个单词表示一个字符串。     scanf("%s%s%s%s", c1, c2, c3, c4);       printf("输入的字符串为:%s %s %s %s ", c1, c2, c3, c4);      }

输入后各个字符数组的状态如下(摘自C语言谭浩强第三版):

0

1

2

3

4

5

6

7

8

9

a

n

a

n

\0

\0

\0

\0

\0

\0

i

s

\0

\0

\0

\0

\0

\0

\0

\0

a

\0

\0

\0

\0

\0

\0

\0

\0

\0

g

i

r

l

.

\0

\0

\0

\0

\0

下面这个程序是为了验证上面那个内存的存储状态:程序见后面

根据上面的输出结果可以看出,不是所有未赋初值的元素都是\0,为什么呢?到底应该是什么样子的呢?



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3