请完成字符串拷贝程序 #include <stdio.h> void mystrcpy(char s1[], char s2[]); int main() { char s[] = "Hello!"; char s1[20]; mystrcpy(s1, s); puts(s1); return 0; } void mystrcpy(char s1[], char s2[]) { char *p = (1) ; int len = (2) ; while (*p) { s1[ (3) ] = *p; (4) ; } s1[ (5) ] = '\0'; }
时间: 2024-03-27 21:36:52 浏览: 44
字符串拷贝,最好用snprintf。
完整的字符串拷贝程序如下:
```
#include <stdio.h>
void mystrcpy(char s1[], char s2[]);
int main() {
char s[] = "Hello!";
char s1[20];
mystrcpy(s1, s);
puts(s1);
return 0;
}
void mystrcpy(char s1[], char s2[]) {
char *p = s2; // (1) 指向s2的首地址
int len = 0;
while (s2[len] != '\0') { // (2) 计算s2的长度
len++;
}
for (int i = 0; i <= len; i++) { // (3) 复制s2的每一个字符到s1
s1[i] = *(p + i);
}
}
```
解析:
1. 定义一个指针p,指向字符串s2的首地址。
2. 计算字符串s2的长度,即遍历整个字符串直到遇到结束符'\0'。
3. 使用for循环遍历s2的每一个字符,将其复制到s1对应位置上,注意最后还需要复制结束符'\0'。
4. 在循环体中,每复制一个字符后,指针p需要指向下一个字符。
5. 最后在s1的末尾添加结束符'\0'。
阅读全文