C 有人能帮忙吗,我无法修复应该向后打印的程序

C 有人能帮忙吗,我无法修复应该向后打印的程序,c,C,我的教授叫我修,但我不知道这里出了什么问题。 求求你,我什么都试过了,但都没用 #include <stdio.h> void naopak(char slovo[20][20], int i) { for( i=0; slovo[0][i]!='\0';) { i++; } for( i=0; i>=0; i--) { printf("%c",slovo[0][i]); } }

我的教授叫我修,但我不知道这里出了什么问题。 求求你,我什么都试过了,但都没用

#include <stdio.h>
void naopak(char slovo[20][20], int i)
{
    for( i=0; slovo[0][i]!='\0';)
    {
        i++;
    }
    for( i=0; i>=0; i--)
    {
        printf("%c",slovo[0][i]);
    }
}
int main()
{
    char slova[20];
    int n;
    scanf("%d",&n);
    for(int i=0; i<n; i++)
    {
        scanf("%s",&slova);
    }
    for(int i=0; i<n; i++)
    {
        naopak(slova[i][i]);
    }
    return 0;
}
#包括
void naopak(char slovo[20][20],国际一级)
{
对于(i=0;斯洛文尼亚语[0][i]!='\0';)
{
i++;
}
对于(i=0;i>=0;i--)
{
printf(“%c”,斯洛文尼亚语[0][i]);
}
}
int main()
{
char-slova[20];
int n;
scanf(“%d”和“&n”);

对于(inti=0;i,您的程序过于复杂和错误

你可能想要这个:

void naopak(char slovo[20])
{
  int i;
  for (i = 0; slovo[i] != '\0'; i++); // goto end of string

  for (i -= 1; i >= 0; i--)  // i -= 1 decrements i, because i points the NUL terminator
  {
    printf("%c", slovo[i]);
  }
}

int main()
{
  char slova[20];
  scanf("%19s", slova);    // input of word (%19s prevents buffer overflow
                           // if you enter more than 19 chars

  naopak(slova);         // print the word in reverse
  return 0;
}

我不确定我是否理解该程序应该做什么,但下面是一个程序,它要求您给出一些字符,然后将它们反向显示:

#include <stdio.h>
void naopak(char slovo[20], int n)
{
    printf("here is your caracters in backward \n");
    for(int i=n; i>=0; i--)
    {
        printf("%c ",slovo[i]);
    }
}
int main()
{
    char slova[20];
    int n;
    printf("number of caracters ?: ");
    scanf("%d",&n);
    for(int i=0; i<n; i++)
    {
       printf("give carater %d: ",i);
       scanf("%s",&slova[i]);
    }

    naopak(slova,n);

    return 0;
 }
#包括
void naopak(char slovo[20],int n)
{
printf(“这是您的字符反向排列\n”);
对于(int i=n;i>=0;i--)
{
printf(“%c”,斯洛文尼亚语[i]);
}
}
int main()
{
char-slova[20];
int n;
printf(“字符数:”;
scanf(“%d”和“&n”);

对于(int i=0;i请按照学习资料中的示例正确设置代码格式顺便说一下:
slova[20]
是一维数组,因此
slova[i][i]
完全是错误的,这意味着代码甚至不会编译。你至少可以将错误复制到问题中。这并不是说这就足够了。使用调用为
gcc-Wall-Wextra-g
编译,改进代码(使用…)若不获取警告,请使用以了解用户的行为program@RohanBari当然可以,但是对于初学者来说,
slovo[i]!='\0'
更容易理解。是的,
scanf(“%20s”,slova)
更好,但谁在乎玩具程序?@Jabberwocky我不知道会有多少单词,我只知道单词的最大长度是20@EvaSedláková也许您应该添加一些输入和预期输出的示例。我回答中的代码要求输入一个单词,然后反向打印。%20秒可能溢出。@AnttiHaapala是的,但这是一个玩具程序,你不需要张贴一张已经在你答案中的文字图片