를 함수에 전달 나는 다음과 같은 코드가 있습니다액세스 정보는
struct wordPair {
char* englishWord;
char* foreignWord;
};
struct dictionary {
struct wordPair ** data;
int nbwords;
int size;
};
내가 어떤 데이터로 채워 struct dictionary *dictionaryPtr
을 말해봐, 내가 다음 함수에 전달 :
char* dictionary_translate(struct dictionary* d,
const char* const english_word,
const char* const foreign_word)
내를 함수 dictionary_translate
, 전달 된 구조체 내에 중첩 된 struct wordPair
의 데이터에 어떻게 액세스 할 수 있습니까? englishWord
또는 foreignWord
중 하나를 반환하는 함수가 필요합니다.
나는 d->data->englishWord
을 시도했지만 "구조체 또는 공용체가 아닌 것"에 englishWord '멤버 요청 "오류가 표시됩니다.
업데이트!
내가 수행해야 할 함수 dictionary_translate
은 전달 된 단어 중 하나를 포함하는 일치하는 단어 쌍이 있는지 판단하고 번역본의 strdup
(쌍의 다른 단어)을 반환합니다.
const char* test_translations[NB_TESTS][NB_COLS] =
{
{"hello", "hola"},
{"cat", "gato"},
{"dog", "perro"},
{"thanks", "gracias"},
{"pants", "pantalones"},
{"shoes", "zapatos"},
};
이 나는 기능은 영어 단어를 전달 번역 할 때입니다 필요합니다 내가 노력하고있어 첫 번째 테스트에서 함수를 호출하고있어 어떻게 : 여기가 정의한 단어의 배열입니다 외래어를 반환 :
여기char* translationPtr = NULL;
for (i = 0; i < NB_TESTS; i++) {
translationPtr = dictionary_translate(dictionaryPtr, test_translations[i][0], NULL);
printf("English Word %s translated: %s\n", test_translations[i][0], translationPtr);
}
내가 지금까지이 같은 기능을 번역입니다 ...
char* dictionary_translate(struct dictionary* d,
const char* const english_word,
const char* const foreign_word){
int i;
if (d == NULL) return NULL;
for (i = 0; i < d->nbwords; i++) {
if (strcmp(english_word, d->data[i]->englishWord) == 0)
return strdup(d->data[i]->foreignWord);
else if (strcmp(foreign_word, d->data[i]->foreignWord) == 0)
return strdup(d->data[i]->englishWord);
}
return NULL;
}
을 즉시 프로그램이 변환 기능에 도달, 그것은 충돌합니다. 무슨 일이 일어나고 있는지 알기 위해 디버거를 이해할 수는 없지만 translationPtr
에는 NULL (0x0)이 아닌 다른 값이없는 것 같습니다. 나는 디버거에 익숙하지 않아서 읽는 방법을 안다면 더 많이 알려줄 것이라고 확신한다.
데이터가 배열에 대한 포인터 인 것처럼 보이기 때문에 d -> (* data) -> englishWord와 같이 데이터를 참조 해제해야 할 수도 있습니다. – HypnoToad
@DoctorZero : 구문 상 유효하지 않습니다. –