马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
效果gcc my_strcpy.c -o test&&./test
请输入一个字符串到str1中:I love FishC.com!
开始拷贝str1的内容到str2中...
拷贝完毕!
现在,str2中的内容是: är_ÿ
代码#include <stdio.h>
#define MAX 1024
int main() {
char str1[MAX];
char str2[MAX];
char *p1 = str1;
char *p2 = str2;
printf("请输入一个字符串到str1中:");
fgets(str1, MAX, stdin);
printf("开始拷贝str1的内容到str2中...\n");
while ((*p1++ = *p2++) != '\0')
;
printf("拷贝完毕!\n现在,str2中的内容是:%s\n", str2);
return 0;
}
您的代码中存在一个错误,导致 strcpy 函数无法正常工作。在拷贝字符串时,您将 p1 和 p2 的赋值顺序搞反了。正确的实现应该是 *p2++ = *p1++。以下是修复后的代码:
#include <stdio.h>
#define MAX 1024
int main() {
char str1[MAX];
char str2[MAX];
char *p1 = str1;
char *p2 = str2;
printf("请输入一个字符串到str1中:");
fgets(str1, MAX, stdin);
printf("开始拷贝str1的内容到str2中...\
");
while ((*p2++ = *p1++) != '\\0')
;
printf("拷贝完毕!\
现在,str2中的内容是:%s\
", str2);
return 0;
}
现在,当您使用 gcc my_strcpy.c -o test && ./test 编译并运行此代码时,您应该会看到预期的输出,即将 str1 中的字符串成功拷贝到 str2 中。
如果问题已经解决,请设置最佳答案
|