gpt4 book ai didi

c - 有没有办法用指针+变量来遍历数组?

转载 作者:行者123 更新时间:2023-11-30 18:44:32 26 4
gpt4 key购买 nike

我承认这个标题可能令人困惑,但我真的不知道更好的方式来表达它。代码如下:

char * convertCase(char const * array){
size_t i = 0;
while(array[i] != '\0'){
if(array[i] > 96 && array[i] < 123) *array+i -= 32; // fourth row
else if(array[i] > 64 && array[i] < 91) array[i] += 32; // fifth row
i++;
}
return(array);
}

我想要做的就像你在第五行中看到的那样,只是以“第四行”的方式。我想以类似的方式遍历数组,但这给了我一个左值错误。正确的做法是什么?

最佳答案

您的代码中需要更改一些内容:

  1. 正如 Ingo 所说,*array + i是错的;应该是*(array + i)相当于 array[i]

  2. 而不是检查 if(array[i] > 96 && array[i] < 123) ,我更喜欢使用 if(array[i] => 'a' && array[i] <= 'z')这增加了可读性。第二个 if 也是如此

  3. 我建议您不要更改原始字符串,而是创建另一个字符串并在那里收集新字母:

char * convertCase(char const * array)
{
size_t len = strlen(array);
char *new_str = (char *) calloc(len + 1, sizeof(char));

for (size_t i = 0; i < len; ++i)
{
if (array[i] >= 'a' && array[i] <= 'z') new_str[i] = array[i] - ('a' - 'A');
else if (array[i] >= 'A' && array[i] <= 'Z') new_str[i] = array[i] + ('a' - 'A');
}

return new_str;
}

关于c - 有没有办法用指针+变量来遍历数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57760372/

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