C语言:字符数组赋值

本文介绍了C语言中字符数组的使用,包括直接赋值、逐一赋值和使用strcpy函数赋值的方法,并解析了常见的错误。同时,讨论了字符串在C语言中不能直接进行复制和比较操作的特点。此外,还提到了strcat函数的功能,即连接两个字符串。最后,提供了一个关于字符数组错误描述的选择题,提示读者字符串连接后会覆盖原有的内容。
摘要由CSDN通过智能技术生成

字符数组:C语言学习中较麻烦的部分,C语言中没有字符串这种类型的数组,字符串只能存储字符型数组中。

1、定义时直接赋值

char a[10]={"I LOVE C"};//可以直接省去花括号直接写成char a[10]=''I LOVE C";

注意:此处的"I LOVE C"中空格也是占用字节的,字符数组必须要大于字符串所需要的字节,才能容纳字符串。

2、对数组中字符逐一赋值

char a[10]={"I"," ","L","O","V","E"," ","C"};//可以看出我们此处也为空格申请空间

 注意:这种写法不能省略花括号的

3、strcpy函数赋值

格式:strcpy(a,b) 可以将b中字符串内容复制到a中,其实就是b的内用覆盖a的内容。

#include<stdio.h>
#include<string.h>
int main()
{
	char str1[10]="I LOVE",str2[]="C";/*定义两个字符数组,并为str2赋初值*/
	strcpy(str1,str2);/*调用strcpy函数*/
	puts(str1);/*输出字符串1*/
	return 0;
} 

 输出结果为C 注意:调用strcpy函数需要调用头文件string.h

char arr[10];

strcpy(a,"I LOVE C");


常见错误辨析

错误(1)

char a[10];

a[10]="I LOVE C";

 错误(2)

char a[10];

a="I LOVE C";

这次变聪明了,直接赋值a,但这种写法仍是错误的,(初学甚浅,目前未接触指针,不过多解释) 

char a[10]; a="I LOVE C";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的I LOVE C常量,这里的指针a出现混乱,不允许!会出现const char无法转换为char类型


补充一点 char *a; a="I LOVE C";//这种情况是正确的。因为定义时a还没有指向的空间,不存在指针指向混乱的情况

  引用于C语言 字符数组赋值的方法 整理

C语言的运算符根本无法操作字符串。在C语言中把字符串当作数组来处理,因此,对字符串的限制方式和对数组的一样,特别是, 它们都不能用C语言的运算符进行复制和比较操作。 

 引用于C语言 字符数组赋值的方法 整理

典型例题 

下述对C语言字符数组的描述中错误的是(?)
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较

 小伙伴知道选择什么吗?答案隐藏在其中,欢迎讨论,指教。


特别 strcat函数

#include<stdio.h>
#include<string.h>
int main()
{
	char st1[30]="I LOVE";
  	char st2[10]=" C";
  	//gets(st2);//相当于赋值st2值,输入值 
  	strcat(st1,st2);//区别于strcpy 
  	puts(st1);
	return 0;
}

小伙伴知道此处输出什么结果吗?仍是I LOVE C!

字符串连接函数strcat
格式:strcat (a,b);

功能:把b中的字符串连接到a中字符串的后面,并删去字符串1后的串标志“\0”。

本函数返回值是a的首地址。

既然没有终点,那在何处又何妨呢。


希望对你有帮助,语言学习贵在坚持输入和输出!

  • 37
    点赞
  • 173
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值