C语言字符串赋值的方法

C语言字符串赋值的方法首先 C 语言没有向 C Java python 等面向对象的语言中 string 这样的字符串类型 C 语言中的字符串是存放在字符型数组中的 C 语言中 常见的 3 种字符串赋值有如下 1 通过字符数组直接初始化 intmain charstr 10 China 还可以写成 charstr 10 str 10 China printf str s amp str return0 但是 直接把数组元素赋值给数组名 也就是数组首元素的地址 是不

首先,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  
     int main() { 
    char* string = "I Love China"; printf("string = %s", string); return 0; } 
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循环

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200007.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午11:43
下一篇 2026年3月20日 上午11:43


相关推荐

  • ceres之LM算法「建议收藏」

    ceres之LM算法「建议收藏」Ceres作为一个优化算法库,在许多领域中有着至关重要的作用,比如slam系统中的优化问题-集束调整BA,就可以通过Ceres去实现,官方文档地址:http://ceres-solver.org/nnls_tutorial.html#bundle-adjustment本文主要是解析ceres中的LM算法过程,参考代码地址:https://github.com/ceres-solver/ceres-solver/tree/master/internal/ceres一、主要流程先贴个图,L.

    2022年10月1日
    3
  • mapreduce-shuffling

    mapreduce-shufflingmap->reducemap和reduce之间的过程,成为shuffling,官方图是这样介绍的.(这样描述不是很准确)MapTask每个map任务都有一个环形内存缓冲区用于存储任务的输出.默认100MB(MRJobConfig.IO_SORT_MB修改)一旦缓冲达到阈值(MRJobConfig.MAP_SORT_SPILL_PERCENT)0.8,后台

    2025年6月26日
    5
  • asmx文件_将Web服务的实现与ASMX文件分开

    asmx文件_将Web服务的实现与ASMX文件分开asmx文件Afellowsaidrecentlythathewantedtobuilda”monsterwebservice”withover20classesandover20methods(well,notTHATmonster,butnotHelloWorld).Hesaid:一位同僚最近说,他想构建一个具有20多个类和20多种…

    2022年5月23日
    43
  • 【《春娇与志明》:贱也要在一起 】-百度影集http://www.baidumovies.com

    【《春娇与志明》:贱也要在一起 】-百度影集http://www.baidumovies.com

    2021年8月17日
    61
  • android之存储篇_ContentProvider存储

    ContentProvider是安卓平台中,在不同应用程序之间实现数据共享的一种机制。一个应用程序如果需要让别的程序可以操作自己的数据,即可采用这种机制。并且此种方式忽略了底层的数据存储实现,ContentProvider提供了一种统一的通过Uri实现数据操作的方式。其步骤为:  1. 在当前应用程序中定义一个ContentProvider。  2. 在当前应用程序的AndroidMani

    2022年3月10日
    54
  • java lang illegalargument_java property

    java lang illegalargument_java propertyErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith’debug’enabled.2021-12-2922:52:35.557ERROR[cloud-payment-service,,,]13720—[restartedMain]o.s.b.d.LoggingFailureAnalysisReporter:************…

    2025年12月1日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号