gpt4 book ai didi

gcc - 传递 'strlen' 的参数 1 使指针来自整数而不进行强制转换

转载 作者:行者123 更新时间:2023-12-01 14:30:02 25 4
gpt4 key购买 nike

不清楚为什么我会收到以下警告:

[警告] 传递 'strlen' 的参数 1 使指针来自整数而不进行强制转换 [默认启用]应为 'const char *' 但参数类型为 'char'

下面包含 strlen() 的 3 个语句中的两个。

即使我试图转换 *str 它仍然给出相同的警告。bfr 是一个字符缓冲区。 *str 指向调用后的字符缓冲区得到()。如果我使用 strlen(*str) 我会收到警告。如果我使用 strlen(bfr) 我不使用。但是 *str 应该等同于 bfr。因此对错误感到困惑。

实际上,strlen arg 1 被定义为 strlen(const char *string)。所以我由于 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
}

最佳答案

有时您只需要在早上重新审视一个问题。我意识到 strlen 正在寻找一个指向字符串的指针,而“str”被定义为一个指针。所以 *str 将是指向指针的指针。所以警告是正确的。它应该读作 len = strlen(s) 而不是 len = strlen(*s)。它是指向 'bfr' 的 'str' 而不是 *str;

回答了我自己的问题。

关于gcc - 传递 'strlen' 的参数 1 使指针来自整数而不进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33929024/

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