|
发表于 2020-3-7 08:49:50
|
显示全部楼层
两个问题
1. if (str2[i] = '\0') 这里少了一个=,应该是if (str2[i] == '\0')
2. str2[++i] = str1[++i]; 这里多了一个++,应该是str2[i] = str1[++i];
修正之后的源码:
#include<stdio.h>
#define MAX 1024
int main()
{
int n,i;
char str1[MAX];
char str2[MAX];
char *target1 = str1;
char *target2 = str2;
char ch;
printf("请输入一个字符串到str1中:");
fgets(str1,MAX,stdin);
printf("请输入要拷贝的个数:");
scanf("%d",&n);//要取址存进去
printf("正在拷贝str1的内容到str2...\n");//不能放在循环结构中打印
/* while(n--)
{
ch = *target2++ = *target1++;//必须赋值给ch因为这个语句结束后面指针已经往后移了
if ((int)ch < 0)//注意将字符强制转化为整型在比较大小
{
*target2++ = *target1++;
}
if (ch == '\0')
{
break;
}
}
*target2 = '\0';//因为上面指针赋值的式子注定要往后指,所以直接赋值即可
*/
for (i=0;;i++)
{
if (!n)//注意等于0才让进
{
break;
}
printf("时间\n");
str2[i] = str1[i];
if ((int)str2[i] < 0)
{
str2[i] = str1[++i];
}
n--;
if (str2[i] == '\0')
{
break;
}
printf("%d %d",str1[i],str2[i]);
}
str2[i] = '\0';
printf("拷贝完毕!\n");
printf("现在str2中的内容是:%s\n",str2);//可能只拷贝部分,要手动加换行符
return 0;
} |
|