作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我承认这个标题可能令人困惑,但我真的不知道更好的方式来表达它。代码如下:
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);
}
我想要做的就像你在第五行中看到的那样,只是以“第四行”的方式。我想以类似的方式遍历数组,但这给了我一个左值错误。正确的做法是什么?
最佳答案
您的代码中需要更改一些内容:
正如 Ingo 所说,*array + i
是错的;应该是*(array + i)
相当于 array[i]
而不是检查 if(array[i] > 96 && array[i] < 123)
,我更喜欢使用 if(array[i] => 'a' && array[i] <= 'z')
这增加了可读性。第二个 if
也是如此
我建议您不要更改原始字符串,而是创建另一个字符串并在那里收集新字母:
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/
我是一名优秀的程序员,十分优秀!