gpt4 book ai didi

向后打印字符串中每个单词的c程序

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:55 24 4
gpt4 key购买 nike

这是我用于向后打印字符串中每个单词的源代码。但是这段代码只是向后打印第一个单词而不是整个字符串。在向后打印第一个字后,它会生成一个向后打印的第一个和第二个字的模式。如果使用 while 而不是 if 那么它会生成一个无限循环。

// Print an Entered String Backwards
#include <stdio.h>
#include <string.h>

int main()
{
int j,i;
char str[100];
printf("Enter String\n");
gets(str);
printf("\nString in Reverse Order\n");
i=0;
while(str[i]!='\0')
{
if(str[i]==' ')
{
for(j=i-1;j>=0;j--) //Loop starts from last char and decrements upto 0th char
printf("%c",str[j]);
printf(" ");
}
i++;
}
}

最佳答案

不要使用gets。它不安全并且已被弃用。使用 fgets 代替读取输入字符串 stdin。现在,要反向打印字符串中的每个单词,您需要更改 while 循环。

#include <stdio.h>

int main(void)
{
int i, j;
char str[100];
printf("Enter String\n");

// fgets reads one less than sizeof(str), i.e., 99
// characters from stdin and stores them in str array.
// it returns when a newline is input which it stores in
// the the array and then appends a terminating null byte
// to mark the end of the string
fgets(str, sizeof str, stdin);
printf("\nString in Reverse Order\n");

i = 0;
while(str[i] != '\0')
{
if(str[i] == ' ' || str[i] == '\n')
{
// the loop condition checks for either the
// start of the string or a whitespace since
// since these two cases demarcate a word from
// other words in the string
for(j = i - 1; j >= 0 && str[j] != ' '; j--)
printf("%c", str[j]);

printf(" ");
}
i++;
}
// output a newline to flush the output
printf("\n");
return 0;
}

关于向后打印字符串中每个单词的c程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23168711/

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