运行时错误(SIGSEGV)

时间:2010-04-22 10:02:31

标签: c sigsegv

我很高兴知道为什么我在codechef.com中遇到问题http://www.codechef.com/problems/AXR1P2的错误,我的代码是......

#include<stdio.h>
#include<stdlib.h>
int main()
{
int *num=0,n=0,i=0,max=0;char *s="";
int sum[9]={1,5,14,20,25,31,32,38,39},dsum[9]={1,7,8,14,19,25,26,32,33},unitdig=0;
do
{
  gets(s);
*(num+i)=(int)atoi(s);
i++;
}while(*s!='#');
max=i;
for(i=0;i<max-1;i++)
{
 n=*(num+i);
 if(n>10)
  unitdig=33*(n/10-1)+39+dsum[(n%10)-1];
 else
  unitdig=sum[(n%10)-1];
   printf("%d\n",unitdig%10);
}
 getchar();
return 0;}

2 个答案:

答案 0 :(得分:3)

有几个错误:

char * s = "";
...
gets(s);

你想要读入一个字符串文字,你想要:

char s[SOMESIZE];

你没有初始化num指向任何东西,所以在:

*(num+i)=(int)atoi(s);

您正在取消引用空指针。可能还有其他问题 - 这些是我几乎立即发现的两个问题。

答案 1 :(得分:0)

您有一个int指针(num),它不指向已分配的空间。对此指针的任何访问都将导致意外行为。

相关问题