永发信息网

c语言字符串逆向输出

答案:2  悬赏:0  手机版
解决时间 2022-01-01 12:52
  • 提问者网友:了了无期
  • 2021-12-31 19:47
#include
void put_string(int n, const char s[][10])
{
int i;
int j;
for (i = 0; i < n; i++)
{
for (j = sizeof(s[i])/sizeof(char)-1; j >=0 ; j--)
{
putchar(s[i][j]);
}
printf("\n");
}

}
int main()
{
int n;
scanf("%d",&n);
char s[n][10];
for (int i = 0; i < n; ++i)
{
scanf("%s",s[i]);
}
put_string(n, s);

return 0;
}

这个哪里错了?为什么运行会有乱码?
最佳答案
  • 五星知识达人网友:第幾種人
  • 2021-12-31 20:20
把这条语句for (j = sizeof(s[i])/sizeof(char)-1; j >=0 ; j--)改成:
for (j = strlen(s[i])-1; j >=0 ; j--)当然还要加一个string.h的头文件。
因为定义字符数组的时候就是s[][10],所以不管你写入几个字符,sizeof(s[?])都是10,用strlen()比较好。
全部回答
  • 1楼网友:轻熟杀无赦
  • 2021-12-31 21:29
i为4,*p=s+3;p++; p-i,*p=s printf("%s\n",p-i);是输出一个字符串,这个字符串从数组s开始,直到这个数组结束完,数据的结束标志和字符串是一样的,故可到数组最后一个最就不打下面的字符了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯