【发布时间】:2013-11-25 18:31:00
【问题描述】:
我正在尝试将软件移植到 Linux。它在 Windows 上运行良好。 在 Linux 上,它在 strcmp 上给了我一个分段错误:
int main(void) {
...
char* comando;
char istruzione[100];
scanf("%[^\n]%*c", istruzione);
comando = strtok(istruzione, " ");
if (strcmp(comando, "fput") == 0)
...
}
使用数组表示法可以解决问题,但我需要使用 * 表示法,因为我需要使用 strtok,它返回一个 * 字符。
【问题讨论】:
-
istruzione是什么? -
istruzione 已经分配了吗?它需要用于 scanf()
-
我忘了复制那部分代码。这是一个简单的字符数组。
-
在你的代码中使用 strcmp 后你是否也在使用 comando ?
-
我找到了解决方案。我没有包含 string.h 标头。所以问题是:strcmp 有 2 个实现,一个在 stdlib 中,一个在 string.h 中?以及为什么确切的代码与 Windows 上的 string.h 标头配合得很好?
标签: c linux segmentation-fault scanf strcmp