c - Windows 和 Linux 从文件输入的字符串长度不同,但标准输入 strcmp 不工作

标签 c linux windows strlen calloc

问题太长。这是解决方案。

解决方法:

当试图“仅”获取没有任何特殊字符(例如\n 或\r)的行时 然后循环遍历字符串(char* 类型)直到您点击\r 或\n 以便它在 Windows 和其他 Linux 机器之间略微交叉兼容。

可能的代码:

for (i = displacement; i < strlen(line) && line[i] != '\r' && line[i] != '\n'; i++) {
    newString[i - displacement] = line[i];
}

最佳答案

从文件中读取时,fgets 读取到\n 行终止符(它包括在内)。

在 Windows 下,从文本文件中读取的一行以\r\n 结尾。

在 Unix 下,从文本文件中读取的一行仅以\n 结尾。

因此在 Windows 下,您希望 fgets 读取的字符串长 1 个字节。

关于c - Windows 和 Linux 从文件输入的字符串长度不同,但标准输入 strcmp 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19352942/

相关文章:

windows - msysgit bash 中的语法错误 =~ 运算符

linux - 如何在没有 git 的情况下设置rapidjson

node.js - 安装 Nodejs v9.0.0 后如何将 npm 从 v5.4.1 升级到最新版本

c# - 如何枚举所有可用的无线网络并将它们显示在列表框中?

c - 为什么使用 unsigned int 的模数比使用 unsigned long long 的模数运行得更快?

包含 header 的 C++ 错误

c - C 中的 fork 和 waitpid

c - 使用 printf 我使用的函数的输出返回错误的值

c - ISO/IEC 9899 6.8.4.2 ->2 短语是什么意思?

c - 如何安装信号处理程序以在收到 'SIGINT' 时调用函数