我知道有关于跳过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;我什么时候没有进入。
答案 0 :(得分:2)
fgets char * fgets(char * str,int num,FILE * stream); 从流中获取字符串从流中读取字符并将其存储为C 字符串转换为str,直到读取(num-1)个字符或者a 到达新行或文件结尾,以先发生者为准。
换行符使fgets停止读取,但它被认为是a 函数的有效字符并包含在复制到的字符串中 海峡
及其&#39;在规格中。