球最佳
要在C语言中实现一个字符串的反转,同时不使用strlen()函数来获取字符串的长度,你可以通过遍历字符串直到遇到空字符(\0)来手动计算字符串的长度,并在遍历过程中同时反转字符串。
#include <stdio.h>
void reverseString(char *str) {
if (str == NULL) return; // 检查空指针
int length = 0; // 初始化长度计数器
// 计算字符串长度,并找到最后一个字符
char *end = str;
while (*end != '\0') {
end++;
length++;
}
// 使用两个指针从字符串的两端开始向中间遍历,交换字符
char *start = str;
char temp;
for (int i = 0; i < length / 2; i++) {
temp = *start;
*start = *(end - 1 - i);
*(end - 1 - i) = temp;
start++;
}
}
int main() {
char str[] = "Hello, World!";
printf("Original string: %s\n", str);
reverseString(str);
printf("Reversed string: %s\n", str);
return 0;
}
这段代码首先定义了一个reverseString函数,它接收一个字符指针(即字符串)作为参数。函数内部,首先检查这个指针是否为NULL,以避免潜在的空指针解引用错误。然后,使用一个for循环来遍历字符串直到遇到空字符(\0),同时记录下字符串的长度,并找到字符串的最后一个字符。
接下来,使用两个指针(start和end)分别从字符串的开头和结尾开始,逐步向中间移动,并在移动过程中交换这两个指针所指向的字符。这个交换过程一直进行到两个指针相遇或错过彼此(对于奇数字符串长度的情况)。
最后,在main函数中,我们定义了一个字符串str,调用reverseString函数来反转它,并打印反转前后的字符串以验证结果。