C语言:字符数组的输入输出 | 您所在的位置:网站首页 › c语言输入数组怎么停止输出 › C语言:字符数组的输入输出 |
用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 实验室设备网 版权所有 |