C语言字符数组拼接:不用strcat实现字符串连接
C语言字符数组拼接:不用strcat实现字符串连接
本文将探讨如何使用C语言,不依赖strcat函数,将字符数组str2拼接至字符数组str1的末尾。
代码示例:
#include<stdio.h>
int main() {
char str1[12] = { 'yellow' };
char str2[5] = { 'moon' };
int i = 0, j = 0;
while (str1[i] != '\0')
i++;
while (str2[j] != '\0')
{
str1[i] = str2[j];
i++;
j++;
}
str1[i] != '\0';
for (i = 0; i < 12; i++)
printf('%c', str1[i]);
return 0;
}
代码解析:
- 首先,我们定义两个字符数组
str1和str2,分别存储字符串'yellow'和'moon'。 - 使用
while循环遍历str1,找到第一个空字符'\0'的位置,作为拼接的起始位置。 - 接着使用另一个
while循环遍历str2,将str2中的字符依次复制到str1的空字符位置。 - 最后,使用
for循环输出拼接后的字符数组str1。
代码错误和修正:
原始代码中,最后循环的条件为i <= 12,这会导致数组越界访问,因为数组str1的长度为12,有效索引范围为0-11。
修正后的代码:
#include<stdio.h>
int main() {
char str1[12] = { 'yellow' };
char str2[5] = { 'moon' };
int i = 0, j = 0;
while (str1[i] != '\0')
i++;
while (str2[j] != '\0')
{
str1[i] = str2[j];
i++;
j++;
}
str1[i] != '\0';
for (i = 0; i < 12; i++)
printf('%c', str1[i]);
return 0;
}
修正后的代码将循环条件改为i < 12,避免了数组越界问题。
总结:
本文演示了在C语言中,如何通过循环实现字符数组拼接,以及如何避免常见的数组越界错误。希望对读者有所帮助。
原文地址: https://www.cveoy.top/t/topic/o8eT 著作权归作者所有。请勿转载和采集!