小甲鱼C语言课后作业的代码问题
为啥xi下面这段代码 要写两遍*target1++=*target2++ 为啥不放全部代码 一个汉字占了3个字节,所以要加两次,不知道是不是这样理解
学C的大叔 发表于 2021-3-5 22:57
一个汉字占了3个字节,所以要加两次,不知道是不是这样理解
有道理 wp231957 发表于 2021-3-5 22:37
为啥不放全部代码
#include <stdio.h>
#define MAX 1024
int main()
{
char str1; // 确保连接后不越界
char str2;
char *target1 = str1;
char *target2 = str2;
char ch;
int n;
printf("请输入第一个字符串:");
fgets(str1, MAX, stdin);
printf("请输入第二格字符串:");
fgets(str2, MAX, stdin);
printf("请输入需要连接的字符个数:");
scanf("%d", &n);
// 将指针指向 str1 的末尾处
while (*target1++ != '\0')
;
// 我们希望 str1 最后边的 '\0' 和 '\n' 都被覆盖掉
target1 -= 2;
while (n--)
{
ch = *target1++ = *target2++;
if (ch == '\0')
{
break;
}
if ((int)ch < 0)
{
*target1++ = *target2++;
*target1++ = *target2++;
}
}
*target1 = '\0';
printf("连接后的结果是:%s\n", str1);
return 0;
}
页:
[1]