编写一个c语言程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不能用strcpy函数。拷贝时,'\0'也要拷贝过去,但'\0'后面的字符不拷贝
时间: 2024-12-10 10:35:18 浏览: 21
在C语言中,如果你不能直接使用`strcpy()`函数,可以手动遍历源字符串`s2`,逐个字符地复制到目标字符串`s1`,直到遇到`\0`为止。这里是一个示例程序:
```c
#include <stdio.h>
#include <string.h>
void copyChars(char *dest, char *src) {
// 遍历源字符串,直到找到'\0'
while (*src != '\0') {
*dest = *src; // 复制当前字符
dest++; // 移动到下一个位置
src++; // 移动到下一个字符
}
*dest = '\0'; // 在目标字符串的末尾添加'\0'
}
int main() {
char s1[50], s2[] = "Hello, \0world!"; // 示例源字符串
int i = 0;
// 使用循环避免数组越界
for (i = 0; i < sizeof(s1) - 1; i++) { // 字符数组s1减去1是因为最后一个位置用于存储'\0'
if (i == strlen(s2) - 1) break; // 当达到s2的长度时停止复制
s1[i] = s2[i]; // 拷贝字符
}
s1[i] = '\0'; // 添加'\0'
printf("s1: %s\n", s1);
return 0;
}
```
在这个例子中,`copyChars`函数接收两个指针作为参数,并手动处理'\0'的复制。注意,在实际操作中,你需要检查目标字符串`s1`的剩余空间以及源字符串`s2`的实际长度。
阅读全文