文件只输出一半

Cain0 Cain0 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
请教一下各位
给一个内容不为空的文件里插入200个字符串,为什么字符串短的时候正常,但是字符串长的时候就会出错呢?
我用的是fp.get()和fp.put()函数,一边查找插入位置一边将文本输出到屏幕,但是字符串太长的话 文本输出一半程序就结束了
环境:windows VC++6.0
#include<stdio.h>   
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
#include<io.h>
#include<time.h>


long FileLength(FILE * handle) //获取文件长度
{
long len=filelength(fileno(handle));
return len;
}


long * order(int n,long *Ran)
{
int a=n;
int i,j;
long maxno;
for(i=0;i<a;i++)
for(j=0;j<a-i-1;j++)
if(*(Ran+j)>*(Ran+j+1))
{
maxno=*(Ran+j+1);
*(Ran+j+1)=*(Ran+j);
*(Ran+j)=maxno;
}
return Ran;
} //冒泡排序


long* RandomNumber(int n,long len) //生成随机数,并将随机数排序
{
int i;
long *Ran=(long*)malloc(sizeof(long)*n);
srand((unsigned)time(NULL));
printf("生成的随机数为:\n");
for(i=0;i<n;i++)
{
*(Ran+i)=rand()%len;
printf("%ld\n",*(Ran+i));
}
Ran=order(n,Ran);
return Ran;
}


int main()
{
FILE * handle; //handle:指向打开的文件的指针
handle = fopen("./1.txt", "r"); //打开文件并获取文件长度
long len=FileLength(handle);
char c=fgetc(handle);
while(c!=EOF) //当文件结束时
{
printf("%c",c);
c=fgetc(handle);
}

printf("\n文件长度的位数:%ld\n",len);
fclose(handle);


ifstream fin("1.txt"); //打开文件
ofstream fout("1.txt",ios::in);
if(!fin)
{
printf("1 error.\n");
abort();
}
if(!fout)
{
printf("1 error.\n");
abort();
}


char str[100];
printf("请输入想要插入的字符:");
scanf("%s",&str);

int n;
printf("请输入想要插入字符的次数:");
scanf("%d",&n);



long * Ran;
Ran=RandomNumber(n,len);
cout<<endl;
printf("排好序的随机数为:\n");
for(int i=0;i<n;i++)
{
cout<<*(Ran+i)<<endl;
}

char ch;
int k=0,l;
long m=0;
while(m<len) //当文件结束时循环结束
{
if(m==len/2)
{
fflush(stdin);
clearerr(stdin);
}
fin.get(ch);
fout.put(ch);
printf("%c",ch);
if(long(ch)<0) //判断文件当前位置是否为汉字
{
fin.get(ch);
fout.put(ch);
printf("%c",ch);
while((*(Ran+k)==m||*(Ran+k)==(m+1))&&k<n) //在与随机数匹配的位置插入字符串
{
for(l=0;l < strlen(str);l++)
fout.put(str[l]);
printf("%s",str);
k++;
}
m+=2;
}
else
{
while(*(Ran+k)==m&&k<n) //在与随机数匹配的位置插入字符串
{
for(l=0;l<strlen(str);l++)
fout.put(str[l]);
printf("%s",str);
k++;
}
m+=1;
}
}

fin.close(); //关闭文件
fout.close();

return 0;
}
...全文

相关推荐

java代码-.编程实现,一个只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃掉前一天剩下的一半零一个,第十天早上,发现只剩下一个桃子,请问猴子第一天一共摘了多少个桃子?

java代码-.编程实现,一个只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃掉前一天剩下的一半零一个,第十天早上,发现只剩下一个桃子,请问猴子第一天一共摘了多少个桃子?

weixin_38592548

真的可以是逆序输出任意字符串

逆序输出任意字符串 逆序输出任意字符串 逆序输出任意字符串 逆序输出任意字符串 逆序输出任意字符串

lvan100

java代码-编程实现,一个只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃掉前一天剩下的一半零一个,第十天早上,发现只剩下一个桃子,请问猴子第一天一共摘了多少个桃子?

java代码-编程实现,一个只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃掉前一天剩下的一半零一个,第十天早上,发现只剩下一个桃子,请问猴子第一天一共摘了多少个桃子?

weixin_38718307

java代码-一个只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃掉前一天剩下的一半零一个,第十天早上,发现只剩下一个桃子,请问猴子第一天一共摘了多少个桃子?

java代码-一个只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。 第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃掉前一天剩下的一半零一个,第十天早上,发现只剩下一个桃子,请问猴子第一天一共摘了多少个桃子?

weixin_38644097

java代码-编程实现,一个只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。 * 第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃掉前一天剩下的 * 一半零一个,第十天早上,发现只剩下一个桃子,请问猴子第一天一共摘了多少个桃子?

java代码-编程实现,一个只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个。 * 第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃掉前一天剩下的 * 一半零一个,第十天早上,发现只剩下一个桃子,请问猴子第一天一共摘了多少个桃子?

weixin_38638004
评论 9
收藏 已收藏
分享
返回顶部
Cain0
新手乐园 33,315 成员 41,769 内容