【问题标题】:How to printf something after the string in the same row in C FILE?如何在C FILE中同一行的字符串之后打印一些东西?
【发布时间】:2014-08-22 07:27:06
【问题描述】:

我在数组后面打印一些东西时遇到问题,例如:

while(fgets(row,MAX,f) != NULL)
    {
        printf("%s %d",row,upper_lett_in_curr_row(row));
    }

整数值是大写单词的数量,需要出现在行字符串旁边,但是这个值出现在下一行,为什么?很少见,因为当我写这段代码时:

while(fgets(row,MAX,f) != NULL)
        {
            printf("%d %s",upper_lett_in_curr_row(row),row);
        }

它打印在同一行但在行的开头,而不是在字符串的末尾。

【问题讨论】:

  • 可能是您的字符串row,末尾有 '\n` 下一行字符。

标签: c string file


【解决方案1】:
fgets(row,MAX,f)

\nfgets 的有效字符,所以fgets 填充的字符串(row)末尾有换行符,需要手动删除。

【讨论】:

    【解决方案2】:

    当您使用fgets 读取文件时,它将读取包括\n 在内的整行。所以在打印时:-

     printf("%s %d",row,upper_lett_in_curr_row(row));
    

    row 字符串末尾包含\n。所以打印字符串后,由于\n在末尾光标会移动到下一行并打印整数。

    为了避免这种情况,你可以这样做

    int len;
    // your stuff
    while(fgets(row,MAX,f) != NULL)
    {
        len = strlen(row);
        row[len-1] = '\0'; // make \n as null
    
        printf("%s %d",row,upper_lett_in_curr_row(row));
    }
    

    【讨论】:

    • strlen() 函数返回size_t,您应该将它移到循环内。并使其成为const。 :)
    • 这个有帮助。非常感谢:)
    • @SkokajSkokaj 如果此答案解决了您的问题,则意味着验证它!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 2021-07-06
    • 2015-04-09
    相关资源
    最近更新 更多