如何从fgets()输出的末尾修剪'\ n'

时间:2015-12-31 17:32:23

标签: c

我想从fgets输出修剪换行符。

while(fgets(buff,1024,fp) ){

    printf("start%send",buff );

如果文件中有“C is cool”行。然后打印上面的代码。

startC is cool
end 

但我希望它像

一样打印
 startC is coolend 

如何做到

2 个答案:

答案 0 :(得分:7)

清洁方法

#include <string.h>

//...

buff [ strcspn(buff, "\r\n") ] = 0;

这可以安全地用于任何种类的行结尾,即使没有,也就是说,即使字符串是空的。

答案 1 :(得分:2)

您可以将最后一个字符设置为'\0'(空终止符)。这不是一个好方法,因为该文件可能并不总是有换行符。

buff[strlen(buff) - 1] = '\0';

或循环遍历char数组末尾将'\n'替换为'\0'

int i;
for(i = 0; i < strlen(buff); i++)
{
    if(buff[i] == '\n')
    {
        buff[i] = '\0';
        break;
    }
}

或删除最后'\n'的{​​{1}}:

strcspn()
相关问题