我正在尝试阅读 1 行,但我不确定换行符是如何表示的。通过 fgets() 从文件中读取它时,我应该将其视为 2 个字符还是 1 个字符?例如,我在文件中有一行 15 个字符 + 新行。那么我应该如何安全地分配字符串并读取该行?
起初,我试过这个:
char buf[16];
fgets(buf, 16, f);
它在没有换行符的情况下正确读取该行,我假设 buf[15] 包含空字符。
但是,当我想读取和存储换行符时,它并没有像我想象的那样工作。据我所知,'\n' 应该被视为一个字符并且只占用一个字节,所以要读取它,我只需要再读取一个字符。
但是当我尝试这个时
char buf[17];
fgets(buf, 17, f);
它与前面的示例完全一样 - 现在我的字符串中存储了换行符(我不确定在这种情况下 null char 存储在哪里)
要使用换行符阅读整行,我需要这样做
char buf[18];
fgets(buf, 18, f);
或者这个(它有效,但我不确定它是否安全)
char buf[17];
fgets(buf, 18, f);
所以问题是,当行只有 15 个字符 + 换行符时,为什么我需要分配和读取 18 个字符?