gpt4 book ai didi

c4133 警告 C 代码

转载 作者:太空宇宙 更新时间:2023-11-04 05:12:53 25 4
gpt4 key购买 nike

我有警告 c4133 的问题,它说问题是从 char* 到 int* 的不兼容类型,我尝试转换指针 ((char*)x) 但没有成功,也许有人知道问题出在哪里/

这是我的程序,问题出在函数上。

void replaceSubstring(char *str, char *substr)//function that gets string and substring and      make the substring in string big letters
{
int i;
int *x;

x = (strstr(str, substr));//The problem line
while (strstr(str,substr) != NULL)
{
for (i=0;i<strlen(substr);i++)
{
*x = *x - 32;
x++;//move to the next char
}
x = (strstr(str, substr)); //first apear of substr int str
}
}

最佳答案

在您的代码中,x 被定义为 int *strstr() 的返回类型是 char *..检查man page在这里。

值得一提的是,casting 通常被认为是 c 中的不良做法。使用正确编写的代码,大多数情况下,casting 都可以避免。大多数情况下,cast可能会引入很多错误。仔细检查数据类型并远离 casting。

旁注:只是一个建议,也许在从 *x 中直接减去 32 之前,也许您想对 *x 执行范围检查在 97-122 内以确保它是小写字母。

此外,最好在循环外执行 strlen(substr),将其存储到变量中并在循环中使用该值。将为您节省对 strlen() 的冗余调用的开销。

关于c4133 警告 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27700942/

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