【发布时间】:2011-02-21 02:24:33
【问题描述】:
我正在尝试删除fgets() 附加的尾随\n 字符。我将这个字符替换为一个以字符结尾的字符串\0。
为什么编译器会报错:“Assignment make integer from pointer without cast”。
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";
:
}
【问题讨论】:
-
我闻到了假代码。我打赌你写的是
"\0"而不是'\0'... -
哈!我是这个 IDE 的新手。显然我的更改没有保存。我确实首先有“\ 0”。我纠正了这个问题,但显然我没有重建。
-
如果您的单词中没有
'\n'(例如,输入以EOF 结束或在没有'\n'的情况下达到您的缓冲区大小),它会很高兴地砍掉您的最后一个字符字。 -
@sarnold:啊,这就是为什么 C 标准说如果源文件没有被换行符终止,行为是未定义的!这样编译器就可以使用此代码;-)
标签: c