文件中的字符串长度

时间:2018-12-07 08:19:15

标签: c

我正在尝试创建一个程序,该程序可以从任何文件中获取一些文本并使用下划线'_'对除空格以外的每个字符进行编码。

例如,假设我们在文件的2行中分别包含"name""code"这两个词。该程序最终将执行此操作:

_ _ _ _ 
_ _ _ _ 

问题是,当我运行代码时,第一行打印了一个额外的下划线,但最后一行正常打印。代码是:

while(1)
{
    if(fgets(str, 100, fp) == NULL)
        break;
    for(i=0; i<strlen(str); i++)
    {
        if(str[i] != ' ')
        {
            printf("%c ", '_');
        }
        else
            printf(" ");
    }
    printf("\n");
}

1 个答案:

答案 0 :(得分:4)

这是因为fgets在文件的每一行的末尾保留换行符,但最后一行不包含换行符。该代码不测试空格字符,仅测试 actual 空格。您可以使用

删除换行符
str [ strcspn(str, "\r\n") ] = '\0';