c语言中 字符数组给赋字符串初值 在数组中是进行怎样存储的 例如:

作者&投稿:溥詹 (若有异议请与网页底部的电邮联系)
请问在c语言中如何通过输入字符串为字符指针数组赋值?~

首先确定是字符指针数组还是字符数组指针,前者是一个数组,数组每个元素都是一个字符指针,后者是一个指向字符数组的指针。
若是指向字符数组的指针,则很简单,使用scanf("%s", str);函数获取输入的字符串,然后使用字符串拷贝函数strcpy(stc, dest);将获取的字符串拷贝到指定地址的字符指针数组中,拷贝过程中注意检查访问数组是否越界,若越界,则需要在字符数组的最后一个元素赋值为结束符'\0'。

若是赋值 字符指针数组,那么就是对数组中的某一个元素指向的字符数组进行拷贝赋值,其过程与前者相同。

1、单字符赋值,可通过数组下标方式或指针方式,引用数组元素,进行赋值。
例子:
char a[10];
char ch='a';
for( i=0;i<10;i++ )
a[i]=ch+i ; //可通过数组下标引用数组元素,完成赋值
char *p;
for( p=a; p<a+10; p++ )
*p=ch++; //通过指针对数组相应元素赋

2、字符串赋值,可使用string.h头文件中的字符串操作函数进行赋值。
例子:
char a[10];
strcpy( a, "abcdefgh");
sprintf(a, "%s", "abcdefgh");
扩展资料:C语言给字符数组赋值的优点:
1、简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
2、运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
参考资料:百度百科 C语言基础语句

补充一下,楼上的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);会出现乱码的

空格不是“\0”,“\0”是在数组中作为结束标记,在ascll代码表里面“\0”是000,而空格是032,所以空格可以作为字符数组的一个元素(非结束标记“\0”)都可以

空格可不是 ‘\0’ 至于b为什么是I是因为 scanf的原因 scanf遇到 空格或者回车的话 就会中断输入了

补充一下,楼上的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);会出现乱码的


六枝特区18421956604: C高手请进!!如何给结构体中的字符数组赋初值? -
圭傅三分: char数组赋值不可以这样,当然如果是定义时候就给初始值的时候是可以的 可以使用strcpy函数 typedef struct FileName { char fn[15]; struct FileName *next; }*pFhead; strcpy(pFhead->fn,"Common Numbers"); 当然要考虑长度的问题,否则会出错

六枝特区18421956604: c语言中关于字符数组的赋值 -
圭傅三分: A肯定是对的,此时如果printf("%s",p);会输出are you B的话,有些编译器会报错,认为++a不合法 C的话,理论上也没有错,此时如果printf("%s",a);会输出how are you 可能是题目认为字符串结束符\0没有存到a数组里,因为a数组只有11个元素,而 "how are you"字符串包含结束符应该是12个字符 D的话明显有错,首先char a[]定义时没有赋值编译是会报错的,另外=&a[1]的表达式也不正确

六枝特区18421956604: C语言中关于字符串个给字符数组赋值的问题 -
圭傅三分: 这个没有错误,只能在定义数组并给数组赋初值的时候用; int a[4] = {0, 1, 2,3}; //定义整型数组a 并赋初值 int s[10] = "hello, world"; //定义字节数组并赋初值 下面的写法是错误的: int a[4]; a[4] = {1,2,3,4}; 因为把赋初值的语句,和定义语句分家了!

六枝特区18421956604: C语言,给数组赋初值 -
圭傅三分: 数组只能够初始化进行赋值,类似于const int a = 10;int A[2][2] = {0}; //注意看与你的写法区别 要相对数组赋值,只能类似于A[0][0] = x;这种方式,也就是通过间接的方式赋值!

六枝特区18421956604: c语言中 字符数组给赋字符串初值 在数组中是进行怎样存储的 例如: -
圭傅三分: 补充一下,楼上的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);会出现乱码的

六枝特区18421956604: 哪位大虾给小弟总结一下给字符数组赋值的所有方法,我快被字符数组弄疯了. -
圭傅三分: 7.3字符数组 用来存放字符量的数组称为字符数组. 7.3.1 字符数组的定义 字符数组形式与前面介绍的数值数组相同. 例如: char c[10]; 由于字符型和整型通用,也可以定义为int c[10]但这时每个数组元素占2个字节的内存单元. 字符数组也可...

六枝特区18421956604: 求具体举例说明C语言数组的三种输入方法:赋初值、初始化、动态赋值. -
圭傅三分: 初始化:int a[2]={1,2}; 赋初值:int b[3]; b[3] = {1,2,3}; 动态赋值:int c[3]; int i; for(i = 0;i < 3;i++)c[i] = i;

六枝特区18421956604: C语言怎样给字符数组赋值 -
圭傅三分: 给字符数组赋值分两种情况,单字符赋值和字符串赋值. 单字符赋值,可通过数组下标方式或指针方式,引用数组元素,进行赋值,如: char a[10]; char ch='a'; for( i=0;i<10;i++ )a[i]=ch+i ; //可通过数组下标引用数组元素,完成赋值 char *p; for...

六枝特区18421956604: C语言给数组全部赋初值(非零)的方法,不用循环!! -
圭傅三分: memset(a,x,sizeof(a));——其中x是你要赋的初值.如有int a[1000],x=0;memset(a,x,sizeof(a));执行后将从地址a起存入4000个0……

六枝特区18421956604: C程序问题字符数组赋予初值
圭傅三分: 是,char数组是不可以这样赋值的...... 把char a[10]; a="china";这两句改成: char a[10]={'c','h','i','n','a'}; 就可以了......

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网