이 질문은 이미 여러 번 답변되었지만 상황을 해결하는 데 어려움을 겪고 있습니다.문자열 포인터, 호환되지 않는 포인터 유형
#include <stdio.h>
#include <stdlib.h>
inputData(int size, char *storage[size])
{
int iterator = -1;
do {
iterator++;
*storage[iterator] = getchar();
} while (*storage[iterator] != '\n' && iterator < size);
}
main()
{
char name[30];
inputData(30, name);
}
경고 메시지 :
$ gcc가 text.c text.c : 기능에서 '주' text.c 내 경고 창출 코드가 포함되어 내 프로그램의 조각을했다 : 18 : 5 : 경고 : 호환되지 않는 포인터 유형의 'inputData'인수 2 전달 [기본적으로 사용 가능] inputData (30, name);^text.c : 4 : 1 : 참고 : 예상 '숯 **'그러나 인수 형인 '* CHAR'inputData (INT 크기 * CHAR 저장 [크기])
EDIT :
좋아, 그래서 나는 약간의 문법으로 놀고 그 문제를 해결했다. 나는 아직도 내가 필요했던 것보다 더 지식이 풍부한 사람으로부터 듣는 것을 꺼린다. 다음은 내가 변경 한 내용입니다.
#include <stdio.h>
#include <stdlib.h>
inputData(int size, char *storage) // changed to point to the string itself
{
int iterator = -1;
do {
iterator++;
storage[iterator] = getchar(); // changed from pointer to string
} while (storage[iterator] != '\n'); // same as above
}
main()
{
char name[30];
inputData(30, name);
printf("%s", name); // added for verification
}
내부'inputData은()', 코드를 중지하는 3 가지 이유가 있어야합니다 : 1)'getchar가()를 '반환' '\ n'' 2)'getchar가 - :
당신은 유용한 다음과 같은 링크를 찾을 수 있습니다()'EOF'를 반환했습니다. 3) 더 이상 공간이 없습니다. – chux