c语言程序调试,求高手速速解答哪里有错,如何改!谢谢!#include <stdio.h> #include <string.h> #define
#include <string.h>
#define N 20
void fun(char *p, char *b)
{
int i=0, k=0;
while(*p)
{
i=0;
while( i<=3&&*p )
{
b[k]=*p;
k++;
p++;
i++;
}
if(*p)
b[k]=' ';
}
b[k]='\0';
}
void main()
{
FILE *fp;
char a[80],b[100];
fp=fopen("test6-1.dat","w");
fgets(a,N,fp);
fun(a,b);
printf("\nThe string after insert space: ");
printf("%s",b);
fclose(fp);
} 展开
问题在下面附的图中指明,共有4处,见图:
1 加头文件 #include <stdio.h>
2 以读写方式打开文件 fp=fopen("test6-1.dat","r+");
此时,还必须自己事先存在一个test6-1.dat文件,且里面不能为空,要有内容
3 改为 b[k++]=' ';
4 去掉箭头
完整程序:
#include <string.h>
#include <stdio.h>
#define N 20
void fun(char *p, char *b)
{
int i=0, k=0;
while(*p)
{
i=0;
while( i<=3&&*p )
{
b[k]=*p;
k++;
p++;
i++;
}
if(*p)
b[k++]=' ';
}
b[k]='\0';
}
void main()
{
FILE *fp;
char a[80],b[100];
fp=fopen("test6-1.dat","r+");
fgets(a,N,fp);
fun(a,b);
printf("\nThe string after insert space: ");
printf("%s",b);
fclose(fp);
printf("\n");
}
#include <stdio.h>
#include <string.h>
#define N 20
void fun(char *p, char *b)
{
int i=0, k=0;
while(*p)
{
i=0;
while( i<=3&&*p )
{
b[k]=*p;
k++;
p++;
i++;
}
if(*p)
b[k]=' ';
}
b[k]='\0';
}
void main()
{
FILE *fp;
char a[80],b[100];
fp=fopen("test6-1.dat","w");
fgets(a,N,fp);
fun(a,b);
printf("\nThe string after insert space: ");
printf("%s",b);
fclose(fp);
}
while ( i < 3 && *p ) 这句 歧意性太大了, 不过我猜测你是想写 while ( (i<3) && (*p) ) 吧
然后, 如果你是想每4个插入一个空格的话,
if ( *p ) b [k ] = ' ';
应该改成
if ( *p ) b [ k ++ ] = ' ';