아래 프로그램을 실행할 때이 문제가 있습니다. 모든 것이 잘 컴파일되지만, 실행하고 무언가를 입력하면 Segmentation 오류 메시지가 나타납니다. 그 전체 코드가 아닌 입력 파일에서 문자열의 배열로 일부 문자열 (주소)를 작성한 다음 배열에서 검색된 문자열 (인수로 입력)에 대한 가능한 일치를 찾습니다. 내가 잘못된 명확하게 볼 수 있습니다"분할 오류 (코어 덤프)"오류로 무엇을합니까? (다른 곳에서는 답변을 찾을 수 없습니다)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char *entry1 = argv[1], *adress[100], *possibleAdress[100], c;
int i,j,k,possible = 0;
while(c = getchar()!=EOF) //write addresses to array
{
while(c = getchar()!=13)
{
adress[i][j] = c;
j++;
}
i++;
}
i = 0;
while(adress[i]!=0) //find adresses matching with search enrty
{
j = 0;
while(adress[i][j]!=0)
{
while(entry1[j]==adress[i][j])
j++;
if(j==strlen(entry1)) //check if the whole search entry is matching
{
possibleAdress[k] = adress[i];
k++;
}
i++;
}
}
return 0;
}
의 I, J 및 K는 모두 초기화하지 않고 사용하는 프로그램은 정의되지 않은 동작을 호출한다. – George
또한'adress'와'possibleAdress'에 메모리를 할당하지 않았으므로 임의의 주소에 값을 쓰고 있습니다. segfault는 정확히 올바른 응답입니다. –
그냥 포인터가되지 않도록 배열을 변경하십시오. 그렇지 않으면 @LeeDanielCrocker가 malloc char entry1 = argv [1], adress [100], possibleAdress [100], c;를 사용하여 명시 적으로 배열의 메모리를 제안하고 실제로 할당해야합니다. – victor