0

我正在使用此函数从字符串中删除换行符:

void remove_newline(char *string) {
    string[strcspn(string, "\r")] = "\0";
    string[strcspn(string, "\n")] = "\0";
}

有趣的是,当我尝试编译时收到警告:

警告:赋值从没有强制转换的指针生成整数

为什么在这种情况下我会收到这样的警告?

4

1 回答 1

4

"\0"是一个字符串文字并定义一个字符数组{'\0', '\0'}。如果不使用索引,它会衰减为指针。然后,您尝试将此指针分配给string[...]哪个是 8 位整数 a char,因此会发出警告

赋值从没有强制转换的指针生成整数

要对单个字符、字符文字进行编码,请使用单引号:'\0'

于 2012-11-19T13:10:26.463 回答