gpt4 book ai didi

c - 帮助反转 C 中的字符串

转载 作者:行者123 更新时间:2023-12-04 09:45:13 24 4
gpt4 key购买 nike

我想在 C 中反转一个字符串

这是我的

void reverse(char str[]) {
int i = 0;

int length;
// Get string length
for (i = 0; str[i] != '\0' ; ++i) {
length = i;
}

char reversed[1000];

int j;
j = 0;
// Reverse it
for (j = 0; j < length ; ++j) {
reversed[j] = str[length - j];
}

}

我知道 reversed 包含反转的字符串,但我不确定如何在不丢弃我需要的数据的情况下修改原始 str

我也不知道如何将str设置为reversed而不再次循环。

再做一次是否可以接受...

    int m;
m = 0;

for (m = 0; m < length ; ++m) {
str[j] = reversed[j];
}

通常我会说这么多循环有味道,但我对这门语言还很陌生,所以我不确定......

更新

感谢大家的所有回答,我也感谢您的修改!

我最终选择了 this ...

int main() {

char str[] = "Reverse me!";

int length;

for (length = 0; str[length] != '\0'; length++) {

}

printf("length => %d chars\n", length);

int j, k;
char c;

for (j = 0, k = length - 1; j < k; j++, k--) {
c = str[k];
str[k] = str[j];
str[j] = c;
}

printf("reversed => %s\n", str);

return 0;
}

我现在知道的一些事情......

  • 有一个类似于 PHP 的 strlen()。但是,这本书还没有讨论,而且我需要熟悉空终止字符串。
  • for 循环可以分配和执行多个以逗号分隔的操作。我从来不知道这个!

所以问是值得的:)

最佳答案

您想进行就地反转。这是一个标准算法:

// taken from The C Programming Language
// by Brian Kernighan and Dennis Ritchie (K&R)
void reverse(char s[])
{
int c, i, j;

for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}

请注意,strlen 几乎取代了原来的第一个循环。它是 string.h 中可用的众多标准字符串操作例程之一。

另见

关于c - 帮助反转 C 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3468568/

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