我编写了一个简单的应用程序,它将逐行读取文件并显示它。对于使用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';
}
}
答案 0 :(得分:2)
通常,您希望查找换行\n
和回车\r
。根据系统的不同,您可以同时获得其中一个或两者。所以你可能想稍微调整你的功能。
如果len
包含缓冲区中单行的长度,并且您只想修剪尾随的换行符,则可以执行以下操作:
while( len > 0 && (str[len-1] == '\n' || str[len-1] == '\r') ) --len;
str[len] = '\0';