0
파일에서 읽은 문자를 문자 배열에 저장하려고 시도하지만 이후의 모든 문자도 저장됩니다. 이 코드에서는 배열을 초기화하는 구조체와 함수를 만들었습니다. "Structures.h" "Utilities.c"에서C - 전체 배열을 반환하는 구조체의 문자열
typedef struct (
int size;
char *elem;
} cvector;
에서
나는 말한다 텍스트 파일을 읽을려고 그런cvector make_cvector (int size)
{ cvector temp;
temp.size = size;
temp.elem = calloc(size, sizeof(char));
return temp;
}
: "ABC"
을 본문에서 나는 진술했다 : (여기서 nPtr은 파일을 여는 포인터이다)
cvector NodeID;
NodeID = make_cvector(3);
for(i=0;i<3;i++){
fscanf(nPtr,"%s", &NodeID.elem[i]);
printf("%s ",&NodeID.elem[i]);
}
이 "ABC"를 초래하지만 지금이 루프 후, 나는 또 다른 루프 입력 :
for(i=0;i<3;i++)
printf("%s ", &NodeID.elem[i]);
사실 내가 저장 "A" "B"와 "C"를하려는 경우 "C BC ABC"에 결과를 갈라져. 아마도 초기화 또는 포인터에 문제가있을 수 있습니다. 그러나 온라인으로 읽으려고 시도했습니다. 오류는 어디에서 발생할 수 있습니까? 고맙습니다!
감사합니다. 오류가 있습니다. 그러나 인쇄는 내 문제를 설명하는 수단이었습니다. 내가 만난 실제 문제는 후반 부분에 있습니다 : 'if (strcmp (LoadLoc, & NodeID.elem [j]) == 0)' 기본적으로 발생하지 않았습니다. 난 그때 초기화와 함께 오류가 아니라고 생각하지만 "strcmp"의 사용과 함께 적절한 대안이 될 것이라고? : D 나는 온라인으로도 검색하려고 노력할 것이다. 대단히 감사합니다! – user2853084
'LoadLoc'은 단일 문자를 포함한 문자열입니다, 맞습니까? 그렇다면'LoadLoc'을'char'에 저장하고'if (LoadLoc == NodeID.elem [j])'를 실행하십시오 – Simon
고마워요! 이 방법이 효과적 이었지만 프로그램의 일부가 문자열이 아닌 문자를 비교하는 방식으로 바뀔 수 있으므로 특정 수준의 보편성을 유지하려고했습니다. 어쨌든 첫 번째 차원이 문자열 배열이고 두 번째 차원이 문자열 당 문자 배열 인 "cvector"대신 "cmatrix"로 초기화하여 문제를 해결했습니다. 모든 도움에 감사드립니다! :디 – user2853084