c中运行时出现内存不能read

来源:百度知道 编辑:UC知道 时间:2024/05/21 12:43:09
#include<stdio.h>
#include<string.h>
void daozhi(char str[]);
main()
{ char a[80],b[80];
strcpy(b,a);
daozhi(a[80]);
if(strcmp(a,b)==0)
printf("%s是回文",b);
else printf("%s不是回文",b);
}

void daozhi(char str[])
{int i,k,n;
char c,*s=str;
for(n=0;s[n]!='\0';n++);
n--;
printf("n=%d\n",n);
for(i=0;i<=n/2;i++)
{c=str[i];
str[i]=str[n-i];
str[n-i]=c;
}
}
这是我的程序。
目的是要判断输入的字符串是不是回文、
如123321倒置以后还是一样的就是回文。。
为什么编译连接都没有错 运行时出现内存不能为read的错误呢

编译就应该有错
你的函数传递不正确
试试下面的

#include<stdio.h>
#include<string.h>
void daozhi(char str[]);
main()
{ char a[80]="123321",b[80];
strcpy(b,a);
daozhi(a);
if(strcmp(a,b)==0)
printf("%s是回文",b);
else printf("%s不是回文",b);
}

void daozhi(char str[])
{int i,k,n;
char c,*s=str;
for(n=0;s[n]!='\0';n++);
n--;
printf("n=%d\n",n);
for(i=0;i<=n/2;i++)
{c=str[i];
str[i]=str[n-i];
str[n-i]=c;
}
}