从Mac复制的文件的CR / LF问题

时间:2016-04-05 03:14:02

标签: c file

我编写了一个简单的应用程序,它将逐行读取文件并显示它。对于使用FTP从Linux或Windows机器复制的文件,它工作正常。但是对于从Mac OS X复制的文件,当我打印该行时,该行的第一个字符不会显示。

如何处理从Mac OS X复制的文件?

示例文件:

Hello world 1
Hello world 2

逐行读取后显示:

ello world 1
ello world 2

代码:

/*****Function to add the NULL termination at end of line*********/ 

my_func(char *str, int len)
{
    if(len)
    {
        if(str[len-1] != '\r') 
        {
            str[len] = '\0';
        }
        else
        {
            str[len-1] = '\0'
        }
    }
    else
    {
        str[len]='\0';
    }
}

1 个答案:

答案 0 :(得分:2)

通常,您希望查找换行\n 回车\r。根据系统的不同,您可以同时获得其中一个或两者。所以你可能想稍微调整你的功能。

如果len包含缓冲区中单行的长度,并且您只想修剪尾随的换行符,则可以执行以下操作:

while( len > 0 && (str[len-1] == '\n' || str[len-1] == '\r') ) --len;
str[len] = '\0';