gpt4 book ai didi

c - GCC 投诉——赋值从指针生成整数而不进行强制转换

转载 作者:行者123 更新时间:2023-11-30 14:29:15 36 4
gpt4 key购买 nike

我正在尝试删除 fgets() 附加的尾随 \n 字符。我将此字符替换为终止字符的字符串 \0

为什么编译器给出错误:“赋值从指针生成整数而不进行强制转换”。

word[strlen(word) - 1] = "\0";

这里有一个更完整的代码示例,以防需要一些上下文。

FILE *wordFile = fopen("/temp/words.txt", "r");
char word[100];
while (fgets(word, 100, wordFile)) {
// Strip off the trailing the \n so it is not counted
// as part of the string length
word[strlen(word) - 1] = "\0";
:
}

最佳答案

您的问题在于以下语句:

word[strlen(word) - 1] = "\0";

这是尝试将指向 C 字符串的指针分配给数组元素(整数类型char),因此出现错误消息“Assignment made integer from没有转换的指针”.

你应该写的是:

word[strlen(word) - 1] = '\0';

它将一个字符分配给数组元素。

顺便说一句,您应该注意长度超过(大约)100 个字符的行。您将只读取该行的第一部分,它的末尾不会换行符,并且下次通过循环时您将将该行的其余部分作为单独的行读取(如果您有一条线,例如 1K 长,则这种情况可能会发生很多次。

无论如何,您可以使用以下代码来解决这些问题:

if ((s = strlen (word)) > 0) {
if (s[s-1] != '\n') {
// Line was too long, do something intelligent.
} else {
s[s-1] = '\0';
}
}

关于c - GCC 投诉——赋值从指针生成整数而不进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5061708/

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