#include <stdio.h> int main() { char a[30],b[30],*p1,*p2; printf("请输入字符串到 a 中:"); gets(a); printf("请输入字符串到 b 中:"); gets(b); for(p1=a; ;p1++) //使用循环,移动指针变量 p1,使其指向字符串尾部 ; for(p2=b;* ; )//使用循环,逐个字符复制,达到字符串复制效果 *p1='\0'; //加截字符串技术标志 printf("\n 复制后的 a 串中为:%s\n",a); //输出字符串 a printf("复制后的 b 串中为:%s\n",b); //输出字符串 b return 0; }
时间: 2024-03-10 16:47:03 浏览: 44
C语言实验一 集成开发环境.zip
这段程序存在几个问题。首先,循环中的条件没有被正确设置,导致程序会一直循环下去,无法停止。其次,在字符串复制的循环中,指针变量p2没有被正确移动,导致复制的结果不正确。
下面是修改后的程序:
```c
#include <stdio.h>
#include <string.h>
int main() {
char a[30], b[30], *p1, *p2;
printf("请输入字符串到 a 中:");
fgets(a, 30, stdin);
printf("请输入字符串到 b 中:");
fgets(b, 30, stdin);
p1 = a + strlen(a);
for (p2 = b; *p2 != '\0'; p1++, p2++) {
*p1 = *p2;
}
*p1 = '\0';
printf("\n复制后的 a 串中为:%s\n", a);
printf("复制后的 b 串中为:%s\n", b);
return 0;
}
```
这个程序使用了字符串长度函数`strlen()`来确定指针变量p1的位置。在复制字符串的循环中,使用了两个指针变量p1和p2,它们分别指向字符串a和字符串b的当前位置。每次循环,都将p2指向的字符复制到p1指向的位置,并将p1、p2移动到下一个位置。最后,使用加截字符串技术标志`\0`来表示字符串的结尾。
阅读全文