【发布时间】:2015-11-26 01:04:16
【问题描述】:
不清楚为什么我会收到以下警告:
[警告] 传递 'strlen' 的参数 1 使指针从整数不进行强制转换 [默认启用] 预期为 'const char *' 但参数的类型为 'char'
在下面包含 strlen() 的 3 个语句中的两个。
即使我尝试施放 *str,它仍然给出相同的警告。 bfr 是一个字符缓冲区。 *str 在调用后指向该字符缓冲区 得到()。如果我使用 strlen(*str) 我会收到警告。如果我使用 strlen(bfr) 我不会。 但是 *str 应该等同于 bfr。因此,关于错误的混乱。
现在实际上,strlen arg 1 被定义为 strlen(const char *string)。所以我 本来预计 strlen(bfr) 也会产生错误,因为 bfr[] 是 char 字符串,也不是 const char。
被制成指针的整数在哪里?
我在 wXDev-C++ 下使用 gcc。
void test(){
FILE *fileID = fopen("somefile.txt","r");
char *str, len;
char bfr[16];
str = fgets(bfr,16,fileID); // str will be set equal to &bfr[0]
len = strlen(*str); // This gives a warning
len = strlen((const char)*str); // This gives a warning
len = strlen(bfr); // This does not give a warning
}
【问题讨论】: