请检查你的代码所有关于内存读写的地方
不能用下标 10 读取数组 x1 的内容,这样子会导致数组上标越界
你只能使用 0 - 9 来读取数组 x1 的内容
标准输出流有缓存,需要特定条件都会触发真正显示出来。而且一般不建议混用c方式的输入输出(scanf)和c++的标准iostream
可以baidu一下“标准输出流缓冲”获取相关的信息。
#include<stdio.h>#include<string.h>
void main()
{
FILE *fp1,*fp2
int i,j
char m[3][20]={"student","teacher","string"}
char n1[60],n2[60]
fp1=fopen("stu.txt","wt+")
if(fp1==NULL)
return
fp2=fopen("student.txt","wt+")
if(fp2==NULL)
return
for(i=0i<3i++)
{
fputs(m[i],fp1)
}
fclose(fp1)
fp1=fopen("stu.txt","r")
if(fp1==0)
return
fgets(n1,60,fp1)
for(i=0,j=0n1[i]!=NULLi++)
if(n1[i]!='s')
{
n2[j++]=n1[i]
}
n2[j] ='\0'
fputs(n2,fp2)
printf("old:\n")
printf("%s\n",n1)
fclose(fp1)
fclose(fp2)
fp2=fopen("student.txt","r")
if(fp2==0)
return
printf("new:\n")
fgets(n2,60,fp2)
printf("%s\n",n2)
fclose(fp2)
}
我也是个新手,我就是搞不懂你这个程序再判断去掉s那里,为什么要加while循环,还有最后输出新的字符窜,又要价格while循环。我去掉while好像程序运行挺正常的,求教!谢谢
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)