初学者请教 输入字符串并逆向打印 找不出错误 感谢!

#include
int read(char s[100]);
void print(char s[100]);
int read(char s[100])
{
int ch,i;
while((ch=getchar())!='\n')
{
for(i=0;i {
s[i]=ch;
}
}
s[i]='\0';
return i;
}
void print(char s[100])
{
int j,i=read(s);
for(j=i-1;j>=0;j--)
{
printf("%c",s[j]);
}
}
int main()
{
char s[100];
print(s);
return 0;
}

c

5个回答

#include
int read();
char sh[100];
void print(char s[100]);
int read()
{
int ch,i=0;
while((ch=getchar())!='\n')
{

sh[i]=ch;
i++;
}
sh[i]='\0';
return i;
}
void print(char s[100])
{
int j,i=read(sh);
for(j=i-1;j>=0;j--)
{
printf("%c",s[j]);
}
}
int main()
{
print(sh);
getchar();
return 0;
}

代码错误 read() 改下

 int read(char s[100])
{
    int ch, i = 0;
    while ((ch = getchar()) != '\n')
    {
    //  for (i = 0; i{
            s[i++] = ch;
    //  }
    }
    s[i] = '\0';
    return i;
}

看情况你应该是少输出了一个字符,把s[i]='\0'改成s[i+1]='\0'就行了

楼上说的for也要去掉

你这是完整代码?看不懂这样写的意义,都没有获取输入,如何输出?read函数不应该有参数,记录输入要设置全局变量,局部变量不可能获取的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问