C语言文件读入另类问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 13:19:04
比如说我有一个in.txt文件,其中有5行(甚至更多行)数据:
1 2 3 4 5
2 3 4 5 6
2 3 5 7 8

注意,第4行和第5行都是空白的(甚至第6,7,8。。。行都是空白),请问下怎么用文件读写的方法把最后的若干个回车符删除,使数据变成3行。
曾经有个网友用了以下程序完成,但是只能完成3行(一行数据,两行空白)的情况,多于3行便不能成功,因为每一行数据完了都有一个回车符。
#include <stdio.h>
int main(void)
{
FILE *fp=fopen("c:\\TEST.TXT","r");/*假设文件名为c:\test.txt*/
char str[50];
fscanf(fp,"%[^\n]",str);
fclose(fp);
fp=fopen("c:\\test.txt","w");
fprintf(fp,"%s",str);
fclose(fp);
return 0;
}
我也尝试在in.txt文件的末尾写入一个'\b',但是打开文件一个,功能不能实现,而是在文件末尾多了一个黑色的方块。
请知道怎么解决的大大们不吝赐教。
补充一下,每一行的数据并不是都如我写的那样只有整型数据,还有字符型的数据,如1 2/2 2:2 23 2 3等等

对~就是如下一个网友说的删除空白行

用我的这个办法,保证药到病除!

只不过把格式化好的文件保存在另外一个文件里面了。
对于文件有多少行没有限制,只要是空行,只有空格或者只有回车的行,一律删除。

这个应该你符合你答案了!如果需要输入到同一个文件里,只需要简单修改一下而已。

#include <stdio.h>
#include <string.h>
int main(void)
{
FILE *out,*fp=fopen("test.txt","r");/*假设文件名为c:\test.txt*/
out=fopen("out.txt","w");
if(!fp || !out)
printf("ERROR\n");
char str[50],*p,temp[50];
int n,m=0,line=0;
while(fgets(str,sizeof(str),fp)){
n=0;
p=str;
//printf("%s",str);
if(line>0 && m>0)
{
printf("%s",temp);
fprintf(out,"%s",temp);
temp[0]='\0';
}
for(int i=0;i<50 && *p!='\0';i++)
{
if(*p!=' ' && *p!='\n')
{
n++;
//printf("%d----%c\n",n,*p);
}
p++;
}
if(n>0)
{
str