首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

linux停fgets到的字符串去掉换行符

2013-04-07 
linux下fgets到的字符串去掉换行符代码如下,报段错误了,帮看下,哪里有错误。。。。#include stdio.h#include

linux下fgets到的字符串去掉换行符
代码如下,报段错误了,帮看下,哪里有错误。。。。



#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//思路把\n去掉,最后最后一行不含\n
int del_str_line(char *str)
{
char *p = str;
while('\n' != *p)
{
p++;
if(*p = '\0') //最后一行EOF不包含\n
return 0;
}
*p = '\0';

return 0;
}

int main()
{
FILE *fp;
char str_line[100];
char *p;
fp = fopen("filename","rb");
if (NULL == fp)
{
puts("open profile error,exit");
exit(1);
}

while(!feof(fp))
{
fgets(str_line,1000,fp);
//去掉换行符
del_str_line(str_line);
puts(str_line);
}

}

[解决办法]
每一次IO之后都要坚持流的状态
 

fgets(str_line,1000,fp);
//请检查状态


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//思路把\n去掉,最后最后一行不含\n
int del_str_line(char *str)
{
  char ch;
while('\n' != *str && *str)
{
    ++str;
}
*str = '\0';
return 0;
}

int main()
{
FILE *fp;
char str_line[100];
char *p;
//fp = fopen("filename","rb");
  fp = fopen("main.cpp","r");
if (NULL == fp)
{
puts("open profile error,exit");
exit(1);
}

while(fgets(str_line,1000,fp))
{
//去掉换行符
del_str_line(str_line);
puts(str_line);
}
}


[解决办法]
 while(!feof(fp))

 没有read之前,FILE是不会被标记为eof的,因为谁也不知道文件到末尾了。
[解决办法]
引用:
while(!feof(fp))

 没有read之前,FILE是不会被标记为eof的,因为谁也不知道文件到末尾了。


++

热点排行