GCC와 VC9가 모두있는 Ubuntu 및 Windows 컴퓨터에서 아래 C 프로그램을 컴파일하고 실행하려고합니다. 그러나 아래 문제에 직면하고 있습니다.
우분투 머신에서 :
GCC는 잘 컴파일되지만 실행하면 다음 프롬프트가 표시됩니다.
Segmentation Fault (Core Dump).
Windows 시스템에서 :
VC9 컴파일 및 실행 GCC는 잘 컴파일되지만 프로그램이 실행되면 프로세스가 종료됩니다.
여기에 전문가의 도움이 필요합니다. 내 코드는 다음과 같습니다.
#include <string.h>
#include <stdio.h>
int calc_slope(int input1,int input2)
{
int sum=0;
int start=input1;
int end=input2;
int curr=start;
//some validation:
if (input1>input2)
return -1;
while(curr<=end)
{
if (curr>100)
{
char *s="";
int length;
int left;
int right;
int cent;
sprintf(s,"%d",curr);
length=strlen(s);
s++;
do
{
//printf("curr=%d char=%c pointer=%d length=%d \n",curr,*s,s,length);
left = *(s-1) - '0';
cent = *s - '0';
right = *(s+1) - '0';
//printf("curr=%d l=%d c=%d r=%d\n",curr,left,cent,right);
if ( (cent>left && cent>right) || (cent<left && cent<right) )
{
sum+=1; //we have either a maxima or a minima.
}
s++;
} while (*(s+1)!='\0');
}
curr++;
}
return sum;
}
int main()
{
printf("%d",calc_slope(1,150));
return 0;
}
최신 정보:
크레딧은 오류를 추적하는 데 도움이 될뿐만 아니라 gcc 컴파일 프로그램을 디버깅하는 데 도움이되는 백 트레이싱 도구 ( )를 소개 하여 Eliah 에게 갑니다 . 다음은 수정 된 버전입니다. 시험과 오류가 발생했습니다.gdb
bt
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int calc_slope(int input1,int input2)
{
int sum=0;
int start=input1;
int end=input2;
int curr=start;
//some validation:
if (input1>input2)
return -1;
while(curr<=end)
{
if (curr>100)
{
int size=10;
char *s=(char*)malloc((size+1) * sizeof(char));
int left;
int right;
int cent;
sprintf(s,"%d",curr);
s++;
do
{
left = *(s-1) - '0';
cent = *s - '0';
right = *(s+1) - '0';
if ( (cent>left && cent>right) || (cent<left && cent<right) )
{
sum+=1; //we have either a maxima or a minima.
}
s++;
} while (*(s+1)!='\0');
}
curr++;
}
return sum;
}
int main()
{
printf("%d",calc_slope(1,150));
return 0;
}