永发信息网

用c判断字符串正反读是否一致,为什么我的输出一直是0?

答案:4  悬赏:40  手机版
解决时间 2021-03-04 09:05
  • 提问者网友:抽煙菂渘情少年
  • 2021-03-03 08:19
#include
#include
int campare(char a[5],char b[5]);
int main()
{
char a[5],b[5];
int i;
printf("请输入数组a的内容:\n");
scanf("%s",&a);
for(i=0;i<4;i++)
{
b[4-i-1]=a[i];
}
campare(a,b);
return 0;
}
int campare(char a[5],char b[5])
{
int c;
if(strcmp(a,b)!=0)
{
c=0;
}
else
{
c=1;
}
printf("%d",c);
return c;
}
最佳答案
  • 五星知识达人网友:第四晚心情
  • 2021-03-03 09:36
这代码写的,那叫一个臭。
至少应作如下改动:
1、输入错了,应将 sacnf("%s",&a) 改为 scanf("%s",a)
2、在调用 campare 前,由于b数组中没有0值元素,即字符串结束符,所以b构不成字符串,调用strcmp将出现不可预见结果。应在调用campare前加一句:b[4]=0;
3、函数campare脱裤子放了个屁。
看我的:
#include
#include
void main() {
char a[5],b[5]={0};
int i;
printf("请输入数组a的内容:\n");
scanf("%s",a);
for(i=0;i<4;i++) b[3-i]=a[i];
printf("%d",!strcmp(a,b));
}
全部回答
  • 1楼网友:七十二街
  • 2021-03-03 11:05
正读:scanf("%s",a+1); 这样就从a[1]开始 倒读:for(int i=n-1;i>0;i--) //n是你数组的长度或者比数组长度小的常 { //量,i>0也就是到a[1]结束 scanf("%c",a+i); //因为倒过来,所以一个一个元素往里放 } a[n]='/0'; //别忘了数组最后一个元素是0 理解scanf()的运作方式:每次输入都从缓冲区读取一定的内容. 比如如果是%c,那么从缓冲区读取1个字节.如果你输入了"abcd"那么先把'a'放进去,然后第二次循环把'b'放进去以此类推.
  • 2楼网友:低音帝王
  • 2021-03-03 10:33
return 0 改成 return compare(a, b)
  • 3楼网友:底特律间谍
  • 2021-03-03 10:27
#include #include int campare(char a[5],char b[5]); int main() { char a[5],b[5]; int i; printf("请输入数组a的内容:\n"); scanf("%s",a); for(i=0;i<4;i++) { b[4-i-1]=a[i]; //这里改了 } campare(a,b); return 0; } int campare(char a[5],char b[5]) { int c; if(strcmp(a,b)!=0) { c=0; } else { c=1; } printf("%d",c); return c; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯