gpt4 book ai didi

c - 在 Windows 和 Linux 中使用 fscanf 时行尾的字符不同

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:43:29 25 4
gpt4 key购买 nike

当我使用 fscanf 读取时:

 nscan = fscanf(input_file, "%30[^,], %d, %lf, %d%c",
array[i].epwnymo, &array[i].ypolipo,
&array[i].epitokio, &array[i].meromhnia, &termch);

termch 应该是 \n,但在 Linux 中,我得到了 \r,这使得我的程序给出了错误的结果。我在某处读到 Windows \n\r\n 但是,为什么我在 Linux 中得到 \r

最佳答案

从技术上讲,这不是 C 语言的问题,因为您会在所有编程语言中注意到同样的事情。

如果您直接将文件从 Windows 复制到 Linux 而没有转换换行符(FTP 允许您通过选择 TEXT 或 ASCII 传输模式来执行此操作),那么您的 Linux 程序看到 '\r' 个字符;在 Windows 中,这些通常会被翻译为 "\r\n" 序列的一部分,但 Linux 不会自动执行此类翻译。

我建议,当您将文本文件从 Windows 复制到 Linux 时,您运行 dos2unix 来转换这些文本文件(除非您使用的 FTP 客户端会为您执行此转换) ...同样,当您将文本文件从 Linux 复制到 Windows 时,您可能应该使用 unix2dos(同样,FTP 场景除外)。

关于c - 在 Windows 和 Linux 中使用 fscanf 时行尾的字符不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34512220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com