fgets()保存跳过行char,而不是跳过输入

时间:2017-06-29 15:27:20

标签: c fgets

我知道有关于跳过fgets()输入的问题;但是我没有在网上找到这个问题的任何帮助或者向周围的朋友求助。

我用:

fgets(tdataMplMsgStrng0_au8, 100, fpread);

从文本文件中读取字符串并将其分配给字符串tdataMplMsgStrng0_au8。我之前和之后都有很多fgets(),没有人跳过数据;然而其他的都被转换为整数,如下所示:

fgets(temp_s32, 100, fpread);
sint32 tCILXIOD_dataMplMsgDisp4To0_u32 = atoi(temp_s32);

问题是,当我将这个字符串打印到文本文件时,它会跳过额外的一行(除了\ n),其他所有其他行都没有相同的格式:

fprintf(fp, "%s\n", tdataMplMsgStrng0_au8);

我在字符串中打印了每个字符,发现它有一个"跳过的字符"作为最后一个字符的字符。我还看到一个14岁及以上的字符,我不熟悉。

要打印到命令窗口的代码:

    for (int i = 0; i < 100; i++)
    {
        printf("\n String[%d]: '%c'", i, tdataMplMsgStrng0_au8[i]);
    }

命令窗口上的输出(注意文本文件包含&#34; 0jkhjkhkkljh&#34;对于设置tdataMplMsgStrng0_au8的行:)

String[0]: '0'
String[1]: 'j'
String[2]: 'k'
String[3]: 'h'
String[4]: 'j'
String[5]: 'k'
String[6]: 'h'
String[7]: 'k'
String[8]: 'k'
String[9]: 'l'
String[10]: 'j'
String[11]: 'h'
String[12]: '
'
String[13]: ' '
String[14]: '|['
String[15]: '|['
String[16]: '|['

任何帮助,了解为什么&#34;跳过线&#34;索引12中的char是有用的晚餐。另外,只是为了获取更多信息,很高兴知道为什么&#39; | [&#39;我什么时候没有进入。

1 个答案:

答案 0 :(得分:2)

  

fgets char * fgets(char * str,int num,FILE * stream);   从流中获取字符串从流中读取字符并将其存储为C   字符串转换为str,直到读取(num-1)个字符或者a   到达新行或文件结尾,以先发生者为准。

     

换行符使fgets停止读取,但它被认为是a   函数的有效字符并包含在复制到的字符串中   海峡

及其&#39;在规格中。

http://www.cplusplus.com/reference/cstdio/fgets/