当我读到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
哪些使我的程序给出了错误的结果.我已经阅读过某个窗口\n
,\r\n
但是,为什么我会\r
进入Linux?
这在技术上不是C问题,因为你会在所有编程语言中注意到同样的事情.
如果您已经将文件直接从Windows复制到Linux而没有转换换行符(FTP通过选择TEXT或ASCII传输模式为您提供了这样做的选项),那么您的Linux程序可以看到'\r'
字符是有意义的; 这些通常会被翻译为"\r\n"
Windows中序列的一部分,但Linux不会自动执行此类转换.
我建议,当您将文本文件从Windows复制到Linux时,您运行dos2unix
以转换这些文本文件(除非您使用的FTP客户端为您执行此转换)...同样,当您复制时从Linux到Windows的文本文件,你应该使用unix2dos
(再次,除了FTP场景).