c语言写了个代码,编译没错,运行出现access violation,急啊!!!

wangzekun1106 2011-10-23 11:40:13
我是新手,想设计一个海明编码的代码,编译没有错,为什么一执行就出现access violation啊?
麻烦高手赐教,谢谢啦!!!

#include <stdio.h>

void getStr();
void analyseStr();
void putStr();

main()
{
char b[5]={0};
char m[8]={0};
getStr(b[5]);
printf("Step 1 OK!");
analyseStr(b[5],m[8]);
printf("Step 2 OK!");
putStr(m[8]);
}

void getStr(char b[5])
{
// int i;
printf("Please input your 4 binary array:\n");
scanf("%s",&b);
/* for(i=0; i<4; i++)
{
scanf("%c",b[i]);
}
*/
}
void analyseStr(char b[5],char m[8])
{
int i;
int P[3]={0};
int B[4]={0};
int M[7]={0};
for(i=0;i<4;i++)
{
if(b[i]=='0')
B[i]=0;
else
B[i]=1;
}
for(i=1; i<9; i++)
{
P[2]=i%2;
P[1]=(i/2)%2;
P[0]=i/4;
if((P[2]+B[1]+B[2]+B[3])%2==0 &&
(P[1]+B[0]+B[2]+B[3])%2==0 &&
(P[0]+B[0]+B[1]+B[3])%2==0 )
break;
}
M[0]=P[0]; M[1]=P[1];
M[2]=B[0]; M[3]=P[2];
M[4]=B[1]; M[5]=B[2];
M[6]=B[3];
for(i=0;i<7;i++)
{
if(M[i]==0)
m[i]='0';
else
m[i]='1';
}
m[7]='\0';
}

void putStr(char m[8])
{
printf("Your Hemingway Code is:\n");
printf("%s",m);
}
...全文
175 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
honbo 2011-10-23
  • 打赏
  • 举报
回复
#include <stdio.h>

void getStr(char b[5]);
void analyseStr(char b[5],char m[8]);
void putStr(char m[8]);

main()
{
char b[25]={0};
char m[8]={0};
getStr(b);
printf("Step 1 OK!\n");
analyseStr(b,m);
printf("Step 2 OK!\n");
putStr(m);
}

void getStr(char b[5])
{
// int i;
printf("Please input your 4 binary array:\n");
scanf("%s",b);
printf("your Input is[%s]\n",b);

}
void analyseStr(char b[5],char m[8])
{
int i;
int P[3]={0};
int B[4]={0};
int M[7]={0};
for(i=0;i<4;i++)
{
if(b[i]=='0')
B[i]=0;
else
B[i]=1;
}
for(i=1; i<9; i++)
{
P[2]=i%2;
P[1]=(i/2)%2;
P[0]=i/4;
if((P[2]+B[1]+B[2]+B[3])%2==0 &&
(P[1]+B[0]+B[2]+B[3])%2==0 &&
(P[0]+B[0]+B[1]+B[3])%2==0 )
break;
}
M[0]=P[0]; M[1]=P[1];
M[2]=B[0]; M[3]=P[2];
M[4]=B[1]; M[5]=B[2];
M[6]=B[3];
for(i=0;i<7;i++)
{
if(M[i]==0)
m[i]='0';
else
m[i]='1';
}
m[7]='\0';

//putStr(m);
}

void putStr(char m[8])
{
printf("Your Hemingway Code is:\n");
printf("%s\n",m);
}


逻辑错误请自己调试。
wangzekun1106 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 relaxisland 的回复:]

这个编译可以通过? 函数声明和函数定义的参数不一致。

scanf("%s",&b); --》b已经是地址了,不用再取地址。
[/Quote]
不知道啊
它就是通过了
也许是是VC++6.0软件没装好??
wangzekun1106 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tujiaw 的回复:]

问题很多, 吃完饭再来写
[/Quote]

好的
谢谢你啊!!
希望能把我的错一点一点指出来
也帮我复习一下C语言
我都忘光了。。。。
wangzekun1106 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 finewind 的回复:]
你这怎么学的C语言基础??!!!
函数原型错误
函数调用错误
scanf函数使用错误
[/Quote]

不好意思啊 以前学的 太久没用都忘记了
但是突然老师布置了个作业要写代码
所以就凭感觉写出来。。。
我也知道很多错
写出来再改嘛
ningto.com 2011-10-23
  • 打赏
  • 举报
回复
问题很多, 吃完饭再来写
  • 打赏
  • 举报
回复
只能说你的编译器容错性太好了.....这都能编译通过...
绿野耕夫 2011-10-23
  • 打赏
  • 举报
回复

你这怎么学的C语言基础??!!!
函数原型错误
函数调用错误
scanf函数使用错误
relaxisland 2011-10-23
  • 打赏
  • 举报
回复
这个编译可以通过? 函数声明和函数定义的参数不一致。

scanf("%s",&b); --》b已经是地址了,不用再取地址。
wangzekun1106 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tujiaw 的回复:]

只能改下语法上面的问题,至于逻辑方面的问题,要看你自己怎么设计的

C/C++ code

#include <stdio.h>

void getStr(char b[]);
void analyseStr(char b[], char m[]);
void putStr(char m[]);

void main()
{
char b[5]={0};
char m[8]……
[/Quote]

谢谢大神
我的逻辑是对的
只是调用函数的C语言知识不太懂
谢谢啦~~明天给分!!!
wangzekun1106 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 honbo 的回复:]

C/C++ code
#include <stdio.h>

void getStr(char b[5]);
void analyseStr(char b[5],char m[8]);
void putStr(char m[8]);

main()
{
char b[25]={0};
char m[8]={0};
getStr(b);
printf("Step ……
[/Quote]

谢谢大神
我的逻辑本来就是对的
只是调用函数不太懂
谢谢啦~~明天给分!!!
juneay 2011-10-23
  • 打赏
  • 举报
回复
void getStr(char b[])
{
// int i;
printf("Please input your 4 binary array:\n");
scanf("%s",&b);
/* for(i=0; i<4; i++)
{
scanf("%c",b[i]);
}
*/
}
楼主的输入是以字符串形式的输入存储的,在ASCII码中1和数字1是不相等的,
ningto.com 2011-10-23
  • 打赏
  • 举报
回复
只能改下语法上面的问题,至于逻辑方面的问题,要看你自己怎么设计的


#include <stdio.h>

void getStr(char b[]);
void analyseStr(char b[], char m[]);
void putStr(char m[]);

void main()
{
char b[5]={0};
char m[8]={0};

getStr(b);
printf("Step 1 OK!");
analyseStr(b,m);
printf("Step 2 OK!");
putStr(m);
}

void getStr(char b[])
{
// int i;
printf("Please input your 4 binary array:\n");
scanf("%s",&b);
/* for(i=0; i<4; i++)
{
scanf("%c",b[i]);
}
*/
}

void analyseStr(char b[], char m[])
{
int i;
int P[3]={0};
int B[4]={0};
int M[7]={0};

for(i=0;i<4;i++)
{
if(b[i]=='0')
B[i]=0;
else
B[i]=1;
}

for(i=1; i<9; i++)
{
P[2]=i%2;
P[1]=(i/2)%2;
P[0]=i/4;
if((P[2]+B[1]+B[2]+B[3])%2==0 &&
(P[1]+B[0]+B[2]+B[3])%2==0 &&
(P[0]+B[0]+B[1]+B[3])%2==0 )
break;
}

M[0]=P[0]; M[1]=P[1];
M[2]=B[0]; M[3]=P[2];
M[4]=B[1]; M[5]=B[2];
M[6]=B[3];

for(i=0;i<7;i++)
{
if(M[i]==0)
m[i]='0';
else
m[i]='1';
}

m[7]='\0';
}

void putStr(char m[])
{
printf("Your Hemingway Code is:\n");
printf("%s",m);
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧