gpt4 book ai didi

c - 反转输入字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:54:35 24 4
gpt4 key购买 nike

我正在 try catch 用户输入的字符串,然后在初始字符串旁边以相反的顺序显示该字符串。我的代码如下:

char str[300], revstring[300];
int i, strlen;



int main(void) {


printf("Enter a string: "); //Prompt user for input string
gets(str);

for (i = 0; str[i] != NULL; i++) { //Get length of string
strlen += 1;
}

for (i = 0; i <= strlen; i++) {
revstring[i] = str[strlen - i];
}

printf("\n\nThe palindrome of your input is %s%s\n\n\n", str, revstring);

return 0;
}

然而,当我运行该程序时,在初始字符串之后我什么也看不到。我来自 Python 背景,所以也许我在考虑这个问题时过于依赖 Python 的思维方式,但我觉得这应该可行。

最佳答案

在这个循环之后

for (i = 0; str[i] != NULL; i++) {          //Get length of string
strlen += 1;
}

str[strlen] 等于终止零 '\0'。当 i 等于 0 时,下一个循环从将此零写入数组 revstring 的第一个元素开始。

for (i = 0; i <= strlen; i++) {
revstring[i] = str[strlen - i];
}

结果没有显示任何内容。

此外,您不应忘记在结果字符串中附加终止零。

请注意 gets 函数是不安全的,C 标准不再支持它。最好使用标准函数 fgets。但是使用它你应该删除附加的换行符。

程序可以这样写

#include <stdio.h>

#define N 300

int main( void )
{
char str[N], revstring[N];

printf( "Enter a string: " );

fgets( str, N, stdin );

size_t length = 0;
while ( str[length] != '\0' && str[length] != '\n' ) ++length;

if ( str[length] == '\n' ) str[length] = '\0';

size_t i = 0;
for ( ; i != length; i++ ) revstring[i] = str[length - i - 1];

revstring[i] = '\0';

printf("\n\nThe palindrome of your input is %s%s\n\n\n", str, revstring);

return 0;
}

它的输出可能看起来像

Enter a string: Hello, Froobyflake

The palindrome of your input is Hello, FroobyflakeekalfyboorF ,olleH

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

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