C语言中如何拼接字符并存储到变量?多字符存入数组作字符串
在C语言中拼接字符为字符串并存入数组的方法
嘿,这个问题其实挺典型的,核心要记住C语言里字符串本质是带'\0'(空字符)终止符的字符数组——要是忘了加这个终止符,后续用printf或者字符串函数的时候准出问题。咱们来看看几种靠谱的实现方式:
方法1:手动逐个赋值字符
这是最直观的方式,直接给数组的每个索引位置赋值字符,最后必须手动添加'\0'来标记字符串结束:
#include <stdio.h> #include <string.h> char n[10]; int main() { // 建议写成int main()并返回值,符合C标准 // 给数组的前三个位置分别赋值目标字符 n[0] = 'a'; n[1] = 'b'; n[2] = 'c'; n[3] = '\0'; // 关键!没有这个,n就不是合法的字符串 // 测试输出,%s会识别到'\0'才停止 printf("拼接后的字符串:%s\n", n); return 0; }
方法2:用sprintf快速拼接
sprintf可以像格式化输出到控制台那样,把字符格式化后写入数组,而且会自动帮我们加上'\0',非常省心:
#include <stdio.h> #include <string.h> char n[10]; int main() { char a = 'a', b = 'b', c = 'c'; // 如果你是单独定义的字符变量 // 把三个字符格式化成字符串存入n sprintf(n, "%c%c%c", a, b, c); printf("拼接后的字符串:%s\n", n); return 0; }
方法3:用字符串拼接函数strcat
如果需要动态拼接多个字符(比如后续还要加更多字符),可以用strcat,但要注意初始时必须把数组设为空字符串(也就是n[0] = '\0'),而且单个字符要包装成临时字符串才能传给strcat:
#include <stdio.h> #include <string.h> char n[10]; int main() { char a = 'a', b = 'b', c = 'c'; // 先初始化n为空字符串 n[0] = '\0'; // 用复合字面量把单个字符转成临时字符串,再拼接 strcat(n, (char[]){a, '\0'}); // C99及以上支持这个语法 strcat(n, (char[]){b, '\0'}); strcat(n, (char[]){c, '\0'}); printf("拼接后的字符串:%s\n", n); return 0; }
几个重要提醒
- 确保数组大小足够:比如你的
n[10]最多能存9个字符加1个'\0',如果后续要拼接更多字符,得调整数组大小避免溢出。 - 永远不要忘记
'\0':没有终止符的字符数组不是合法字符串,用strlen、printf("%s")等函数时会出现未定义行为(比如输出乱码)。 - 遵循C标准:
main函数最好写成int main()并返回0,避免编译器抛出警告。
内容的提问来源于stack exchange,提问作者user180946
相关产品推荐
相关产品推荐

