파일을 읽고 알파 정렬 된 배열로 파일에 쓰는 것이 좋습니다. 그러나 gdb를 사용하여 세그멘테이션 오류가 계속 발생하며이를 통해 내 디스플레이 및 정렬 기능이 세그멘테이션 오류가 발생 함을 나타냅니다.계속 malloc을 사용하여 이름을 정렬하는 데 segault 오류가 발생합니다.
편집 : 메모리를 할당하는 매크로를 사용하여 수정했습니다. 임무이기 때문에이를 위해 공개하고 싶지 않습니다. 모든 사람의 도움에 감사드립니다.
파일을 읽고 알파 정렬 된 배열로 파일에 쓰는 것이 좋습니다. 그러나 gdb를 사용하여 세그멘테이션 오류가 계속 발생하며이를 통해 내 디스플레이 및 정렬 기능이 세그멘테이션 오류가 발생 함을 나타냅니다.계속 malloc을 사용하여 이름을 정렬하는 데 segault 오류가 발생합니다.
편집 : 메모리를 할당하는 매크로를 사용하여 수정했습니다. 임무이기 때문에이를 위해 공개하고 싶지 않습니다. 모든 사람의 도움에 감사드립니다.
이 작업을 수행해야합니까? 아야.
나는 segfault도 있지만 read_names()에 있습니다. 이 말에 잘못) (뭔가를 확보하려고하지만, 내가 & 인쇄를 정렬 할 수 있었다 그 후
void read_names (FILE *fp, char **f, char **l, char *m, int num)//read it
{
int i=0;
char temp[80];
for (i=0; i<num; i++)
{
fscanf(fp, "%s %s %s", f[i], l[i], m);
}
}
: 나는 단순한는 scanf()와 모든 strtok를() 물건을 교체하여 문제를 해결할 수 있었다 .
일반적으로 strtok()은 안전하지 않으며 단지 아프지 만 문자열을 파괴합니다.
더 의미있는 이름을 사용하면 작업하기가 더 쉽습니다. 나는 결국 "l []"이 성을 포함하는 문자열 이었지만 "sLastName []"라인을 따라 무언가를 엄청나게 빨라지게했을 것입니다.
편집 :
내가 수집하여 입력 텍스트 파일은 다음과 같이 보았다 : 는2 bill smith a doug adams r
EDIT2 :
OK, 다른 세그먼트 폴트를 발견했다. "num"은 무엇입니까? 그것은 파일의 이름 수와 각 이름의 종류의 종류로 해석되는 것 같습니다. 마지막으로 나를 위해 - - 세그먼트 폴트가 멀리 갔다
// allocate "num" first name elements -> implied "num" is # of names
f=(char**)malloc (num*sizeof(char*));
// allocate space for each name... but uses the value of "num" for each name
for (i=0; i<num;i++)
f[i]=(char*)malloc (num*sizeof(char)); // "num" bytes per name?
나는 100 개 당 바이트 대신 "NUM"값, 두 번째 할당을 시작했을 때.
전체 프로그램을 입력 한 다음 테스트를 시작 했습니까? 디버거 및/또는 printf()를 사용하여 각 단계에서 원하는 작업을 수행하는지 확인함으로써 점진적으로 기능을 추가하는 작은 단계에서 작업하는 것이 훨씬 쉽습니다.
나는 그것을 고쳤다. num을 사용하는 대신 루프 내부에 매크로를 사용한다고 가정합니다. 의견을 보내 주신 모든 분들께 감사드립니다. 감사합니다. – user1820314
댓글을 달고 좀 더 관대해질 수 있습니까? 그리고 네가 그곳에있을 때 들여 쓰기? 감사. –
심볼로 컴파일 된 바이너리의 코어 덤프를 제공 할 수 있습니까? – cowboydan
gdb에서 실행중인 bt의 결과를 질문에 추가하십시오. –