C语言字符串赋值的方法

首先,C语言没有向C++,Java,python等面向对象的语言中string这样的字符串类型,C语言中的字符串是存放在字符型数组中的

C语言中,常见的3种字符串赋值有如下:

1、通过字符数组直接初始化

int main()
{
	char str[10] = "China";//还可以写成char str[10] ;str[10] = "China";
	printf("str = %s", &str);
	return 0;
}

但是,直接把数组元素赋值给数组名(也就是数组首元素的地址),是不行的

int main()
{
	char str[10] ;
	str  = "China";
	printf("str = %s", str);
	return 0;
}

这样会出现编译错误:C2106(运算符的左操作数必须为左值)

2、使用strcpy函数进行初始化

int main()
{
	char str1[10],str2[] = "China";
	strcpy(str1, str2);//此行代码还可以写为 strcpy(str1,"China");
	printf("str1 = %s", str1);
	return 0;
}

这里需要注意的是,使用strcpy函数,strcpy(str1,str2),字符数组1必须定义的足够大,以便容纳被复制的字符串2,避免数组越界。

以下写法是错误的

char str1[10],str2 = "China";
str1 = str2;

注:
在C语言中,将一个字符串赋值给另一个字符串,只能使用strcpy函数

但是,可以使用赋值号实现对单个字符的赋值

如:

char str1[10];;
str1[0] = 'A';
str1[1] = 'B';
str1[2] = '\0';

这里需要注意的是,结束后一定要自行添加 ‘\0’
否则,就会出现” AB烫烫烫烫烫烫烫 ]D痨“的编译结果

3、通过指针赋值

通过指针赋值字符串相对比较难理解,大家先看一段代码

#define _CRT_SECURE_NO_WARNINGS//在VS2019下可以加,否则会出现C4996问题
#include <stdio.h>
int main()
{
	char* string = "I Love China";
	printf("string  = %s", string);
	return 0;
}

如何理解这段代码:
①程序定义了一个char *类型的指针变量(字符指针变量)string,在C语言中,指针 = 地址,顾名思义,指针变量存放着地址
②字符串常量"I Love China",C语言在处理字符串常量是按字符数组来处理的。
③结合上两点可以知道,该字符指针存放的是字符常量第一个元素的地址
因此,输出时,只需告诉编译器字符常量首元素的地址即可

char* string = "I Love China";

还可以写为:

char * string;
string = "I Love China";//不可以写为*string = "I Love China";

不可以写为:
*string = “I Love China”;

因为,字符串常量在C语言中是按字符数组来存储的,string 存储地址


另外,在谈谈字符串的输出;

char str[10] = "China";
printf("str = %s", str);

而,整型数组的输出确是需要用到for循环

  • 148
    点赞
  • 733
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
C语言中,有几种方式可以给字符串变量赋值。 第一种方式是在定义字符串变量的同时直接用字符串赋值,例如: ```c char str1\[10\] = "hello"; ``` 需要注意的是,这种方式只能在定义字符串变量的时候使用,不能先定义再给它赋值。 第二种方式是逐个字符地给字符串变量赋值,例如: ```c char str2\[10\] = {'h', 'e', 'l', 'l', 'o'}; ``` 第三种方式是使用strcpy函数将一个字符串复制到另一个字符串变量中,例如: ```c char str3\[10\]; strcpy(str3, "hello"); ``` 需要包含头文件<string.h>来使用strcpy函数。 另外,还可以使用指针变量来指向字符串常量的首地址,从而实现字符串变量的赋值,例如: ```c char* str4 = "hello"; ``` 这种方式实际上是将字符串常量的首地址赋给了指针变量。 总结起来,C语言字符串变量的赋值可以通过直接赋值、逐个字符赋值、使用strcpy函数或者使用指针变量指向字符串常量的方式来实现。 #### 引用[.reference_title] - *1* *2* [C语言字符串赋值](https://blog.csdn.net/qq_73659829/article/details/128524117)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C语言字符串赋值方法](https://blog.csdn.net/shanglala/article/details/108559314)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值