linux下fgets到的字符串去掉换行符
代码如下,报段错误了,帮看下,哪里有错误。。。。
#include
#include
#include
//思路把\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
#include
#include
//思路把\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的,因为谁也不知道文件到末尾了。
++