编写函数fun,函数fun 的功能是:将字符串a中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格。编写主函数,输入输出在主函数中进行。
#include<stdio.h>
void fun(char* p, char* a)
{
int i = 0, j = 0;
while (*p)
{
while (i < 3 && *p)
{
a[j] = *p;
j++;
p++;
i++;
}
if (*p)
a[j++] = ' ';
}
a[j] = '\0';
}
int main()
{
char s[100]={0}, a[100];
printf("输入:");
gets_s(s);
printf("复制:");
puts(s);
fun(s, a);
puts(a);
return 0;
}
大致改了一下,主要就是循环那里少了i=0的初始化,改正后正常:
#include<stdio.h>
void fun(char*p,char*a)
{
int i,j=0;
while(*p)
{
i=0; //主要修改处:i每次循环都需要初始化 所以放在第一层循环中
while(i<3&&*p)
{
a[j]=*p;
j++;
p++;
i++;
}
if(*p)
a[j++]=' ';
}
a[j]='\0';
}
int main()
{
char s[80],a[80]; //这里换了一下,题主那样写也可以
printf("输入:");
gets(s);
printf("输入:");
puts(s);
fun(s,a);
printf("\n插入空格后的:");
puts(a);
printf("\n\n");
return 0;
}
运行结果如图:
希望对题主有所帮助,可以的话,帮忙点个采纳!
建议使用memcpy直接复制
i 判断了大于3之后要清零
#include <stdio.h>
void fun(char *p, char *a)
{
int i = 0, j = 0;
while (*p)
{
i = 0;
while (i < 3 && *p)
{
a[j] = *p;
j++;
p++;
i++;
}
if (*p)
a[j++] = ' ';
}
a[j] = '\0';
}
int main()
{
char s[100] = {0}, a[100];
printf("输入:");
scanf("%s", s);
printf("复制:");
puts(s);
fun(s, a);
puts(a);
return 0;
}