怎么进行字符串赋值?C语言
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么进行字符串赋值?C语言相关的知识,希望对你有一定的参考价值。
比如我想让A=right
怎么实现?
麻烦解释一下
在C语言中,字符串的赋值主要有两种方法,第一种是通过指针的方式直接赋值,第二种是通过数组直接赋值。
1、指针式赋值。
通过程序的运行情况,可以知道:char *p = "hello";这种字符串的赋值方式是完全没有问题的。要理解这种赋值方式,首先得理解双引号(特别注意:这个是双引号,不要赋值的时候给弄了个单引号)在这个语句中做了什么工作。双引号主要做了3个工作,分别是:
(1)申请了空间(在常量区),存放了字符串。
(2)在字符串尾加上了“\\0”。
(3)返回地址。
这里所返回的地址就赋值给了char *类型的指针变量p。
2、通过字符数组直接把字符串赋值。程序如下:
扩展资料:
字符串赋值需要注意的一些问题:
直接把字符串赋值给数组名(也就是数组首元素的首地址)是不行的。
会出现以下错误:
参考资料:
百度百科--字符串赋值
字符串赋值的方法:
1、定义的时候直接用字符串赋值
如:char a[10]="hello";
注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的。
例如:
main()
char s[100];
strcpy(s, "The writer would like to thank you for"
"your interest in his book. He hopes you"
"can get some helps from the book.");
2、对数组中字符逐个赋值
字符串可以赋值给字符指针变量,或者将字符串用字符数组保存。
如:char a[10]='h','e','l','l','o';
3、利用strcpy
strcpy是一种C语言的标准库函数,strcpy把含有'\\0'结束符的字符串复制到另一个地址空间,返回值的类型为char*。
如:char a[10];
strcpy(a, "hello");
扩展资料
字符串赋值的注意事项:
1、在使用指针的时候,指针可以自增,而数组名不能自增编译器给数组分配了空间。
2、在指针自增的时候,编译器会自动识别类型,比如指针是指向int型的,想获取下一个的地址时,指针直接p++就行了,不要多此一举的p+4了。
3、在void指针使用的时候,不能使用指针运算,因为void型编译器不能识别类型的长度(即指针所指对象的体积),p++这样就是不合法的,即不能进行数学运算,也不能使用*取值操作,想使用必须转换为其它的类型。
参考资料来源:百度百科——字符串赋值
参考技术B一、题目大意为输出一个已知的字符串。
解题思路:
定义一个字符数组,并用“初始化列表”对其赋以初值
用循环逐个输出此字符数组中的字符
#include <stdio.h>
int main()
char c[15]='r',' ','i','g',' ','g',
' ','h','t','u',;
int i;
for(i=0;i<15;i++)
printf("A=%c",c[i]);
printf("\\n");
return 0;
扩展资料:
相关知识点:字符数组的输入输出可以有两种方法。
(1)逐个字符输入输出(%c)
(2)整个字符串一次输入输出(%s)
输出的字符中不包括结束符’\\0’。用%s输出字符串时,printf函数中的输出项是字符数组名,不是数组元素名。如果一个字符数组中包含多个’\\0’,则。遇第一个’\\0’时输出就结束
用scanf函数输入一个字符串,scanf函数中的输入项c是已定义的字符数组名,输入的字符串应短于已定义的字符数组的长度。
(3)在C语言中,是将字符串作为字符数组来处理的,关心的是字符串的有效长度而不是字符数组的长度。为了测定字符串的实际长度,C语言规定了字符串结束标志’\\0’。
(4) ’\\0’代表ASCII码为0的字符,从ASCII码表可以查到,ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不做。用它作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志
(5)字符的不同写法
(6) 字符串结束标志
参考技术C 在C语言中,字符串是以字符数组形式存储的,并约定以\0作为结束符。所以字符串赋值不能直接用=赋值,而是要用专门的函数进行复制,在C语言中,这个函数为strcpy。1 函数名 :
strcpy
2 形式:
char * strcpy(char *dst, const char *src);
3 头文件:
string.h
4 功能:
将src中的字符串复制到dst中,并返回dst的首地址。
5 示例:
char buf[100], buf1[100];
strcpy(buf, "test");// 将字符串test赋值到buf。
strcpy(buf1, buf); //将字符串buf的值,赋值给buf1. 参考技术D string赋值,需要加个#include<string.h>
然后用strcpy
strcpy(A,"right");来完成,试看吧
会有return, return a得值所以也可以写成
printf("%s\n",strcpy(A,"right"));
因为string 或者 char array 不能直接赐值,
所以要用<string.h>里的工具来完成。本回答被提问者采纳
c语言怎么把二维数组的字符串给到一维数组?
#include <stdio.h>
int main()
char a[15]="你好";
char b[3][15]="323","223","123";
a=b[2];//这里怎么办
printf("%s",a);
按元素赋值:
遍历一维数组,并将每个元素赋值到二维数组的对应元素上。
或者遍历二维数组,将每个元素赋值为一维数组对应值上。
优点为操作灵活,可以按照需要任意赋值。
2 当一维数组和二维数组类型相同,而且赋值顺序与一维数组中的存储顺序完全相同时,可以用memcpy的方式,直接一次性赋值。
如一维数组为a,二维数组为b,基础类型为TYPE,需赋值元素个数为n,可以调用
memcpy(b,a,sizeof(TYPE)*n);
该方法有点为操作简单,执行效率高。
不过所需满足的前提条件多。在满足上述所有条件时,用memcpy的方式更为简单。
个就是apply的一个巧妙的用处,可以将一个数组默认的转换为一个参数列表([param1,param2,param3] 转换为 param1,param2,param3) 这个如果让我们用程序来实现将数组的每一个项,来装换为参数的列表。
参考技术A 字符串不能用赋值号(=)赋值。有两种方法,一是用库函数strcpy(),二是一个一个字符赋值。第一种方法,前面已经有答友写了程序。下面说第二种方法。
不用库函数,可以这样写:
#include <stdio.h>
int main()
char a[15]="你好";
char b[3][15]="323","223","123";
int i;
for(i=0;a[i]=b[2][i];i++);
printf("%s\n",a);
也很简单。
有什么问题请留言。 参考技术B
使用内存复制函数
memcpy(a, b[2], strlen(b[2]) * sizeof(char) + 1);
格式:
memcpy ( 目标地址 , 源地址 ,内存字节长度);
其中
strlen(b[2]):计算b[2]行地址开始的字符串长度(不含结束符)
sizeof(char):跨编译器跨环境的写法,返回char类型的字节宽度。
两者相乘得到字符串占用内存长度(字节),最后补一个结束符的长度。
这个需要调用字符串复制函数strcpy,像这样:
#include <stdio.h>
#include <string.h>
int main()
char a[15]="你好";
char b[3][15]="323","223","123";
strcpy(a,b[2]);
printf("%s",a);
return 0;
截图:
以上是关于怎么进行字符串赋值?C语言的主要内容,如果未能解决你的问题,请参考以下文章