hyfm.net
当前位置:首页 >> C语言字符串赋初值 >>

C语言字符串赋初值

scanf("%c",&s[i]); /*这条语句就是要你输入字符*/ for(i=0;i<7;i++) printf("%c",s[i]); /*这里是输出你输入的字符 二,三楼的说的都错了,你运行程序时直接可以给数组赋初值的 我想你没搞明白的是到底上面输入的是字符,还是字符串吧%c格式输入输出的是单个字符%s格式输入输出的是一个字符串 因为你上面的是字义的一个数组,所以输入输出的时候都是string,%c格式是将单个字符依次给数组,输出时也是单个输出的

B正确 A)字符串应以'\0'结尾,应改为:char s[ ]={'a','e','i','o','u','\0'}; C)这样赋值编译器会默认在结尾处加'\0',由于指定s只能放5个字符,所以good!后若加'\0'会导致数组越界,应改为:char s[6] = “good!”此时字符串中的值为'g' 'o' 'o' 'd' '\0' D)char s[5]后面是分号代表语句结束,s = "good"是下一语句的开始,字符串无法以该方式赋值,应改为s[0] = 'g'; s[1] = 'o'; s[2] = 'o'; s[3] = 'd'; s[4] = '\0';

可以的,不过这个写法不好,一般这样 char a[4*n]={0}; //32位CPU内存对齐,且初始化为0 strcpy(a,"abcdedf..");

string赋值,需要加个#include<string.h> 然后用strcpy strcpy(A,"right");来完成,试看吧 会有return, return a得值所以也可以写成 printf("%s\n",strcpy(A,"right")); 因为string 或者 char array 不能直接赐值,所以要用<string.h>里的工具来完成.

正确的该是char c='5'而char c='\65'是8进制的第二个char c='\101'就可以了'\ddd'就是8进制'\xhh'是16进制

补充一下,楼上的a的存储应该是: I空格am空格boy'\0''\0'是字符串的结束符,空格不是'\0',而是一个字符 这样 printf("%s",a); 才能输出字符串而不出现乱码 即char a[]={'i',' ','a','m',' ','b','o','y','\0'}; 如果真的是:I空格am空格boy 如char a[]={'i',' ','a','m',' ','b','o','y'}; printf("%s",a);会出现乱码的

正常情况下应该会报错的error C2117: 'ok' : array bounds overflow(数组上溢) 如果没有报错,那朋友,这样很危险的,以后别这样.你只定义字符数组长度为2,但是实际字符为"ok\0",也就是3个字符,最后的字符'\0'仍然存在系统中,只不过不在数组c中.这样以后系统再为别的数组分配空间的时候,有可能将含有字符'\0'的空间分配给新的数组,这样对于新的数组将是一个潜在的威胁.养成良好的编程习惯,以后不要这样,直接不加字符长度都行,系统会自动在字符串最后添加结束标志.

字符串是用'\0'作为结束符的,C的话空间不够,因为加上'\0'就应该要6的空间;D的话没有存储'\0',只能说是5个字符,不算一个字符串.

a[2][100]仅仅是1个char型值,你赋了一个字符串,当然不对.根本就没有p[5]这个元素,下标从0算起,是0到4,没有5

C答案,char str[5]为定义一个包含五个元素的字符型数组,c选项为为str[0]='g',str[1]='o',str[2]='o',str[3]='d',str[4]没有赋值但是vc编译系统为它自动赋值为'\0'.

网站首页 | 网站地图
All rights reserved Powered by www.hyfm.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com