|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#define MAX 1024
int main()
{
char str1[2 * MAX];
char str2[MAX];
char *target1 = str1;
char *target2 = str2;
char ch;
int n;
printf("请输入第一个字符串:");
fgets(str1, MAX, stdin);
printf("请输入第二格字符串:");
fgets(str2, MAX, stdin);
printf("请输入需要连接的字符个数:");
scanf("%d", &n);
while (*target1++ != '\0')
;
target1 -= 2;
while (n--)
{
ch = *target1++ = *target2++;
if (ch == '\0')
{
break;
}
if ((int)ch < 0)
{
*target1++ = *target2++;
}
}
*target1 = '\0';
printf("连接后的结果是:%s\n", str1);
return 0;
}
这个程序是第22课的课后作业中的一道题。现在我们用此程序打印这样一句话:
鱼C工作室的域名 (输入到给字符串str1)
是:FishC.com (输入到给字符串str2)
然后把 *target = ‘\0’ 用双斜杠给注释掉。注释掉之后我们输入需要链接的字符个数可以为1~7都行,但是到8了就出乱码,不知道为什么!
还有一个问题就是,当while进行最后一次循环的时候,*target1和*target2这两个指针所进行的自增运算,也就是地址的偏移的数据会保留吗?
1. 因为 while 内部有 *target1++,所以用 *target1 = '\0'; 以确保字符串的结束,如果没有,会有乱码的现象。字数不一定的,看情况。
2.指针是指针,不能够存储那些数据,存储数据的始终是 str1。target1 一开始是指向 str1 的首元素的地址而已,你 ++ 之后就偏移位置了。
|
|