텍스트 및 이진 파일 모두에서 배열을 읽고, 쓰고 채울 수 있음을 보여줄 필요가있는이 프로그램이 있습니다. 나는 바이너리 파일과 함께 많은 발행을하지 못했지만 텍스트 파일은 큰 시간을 두뇌 통증을주고있다.fgets를 사용하여 텍스트 파일에서 배열 채우기
나는이 약간의 코드가 탓할 것이라고 믿습니다. userInputText [MAXSIZE]는 문자 배열 (MAXSIZE는 100000으로 정의 됨)이고 textCount와 textCounter는 프로그램이이 시점에 0으로 초기화됩니다.
textPointer = fopen("textFile.txt", "r");
if (textPointer)
{
while (fgets(userInputText, sizeof(userInputText), textPointer) != NULL)
{
sscanf(userInputText, "%d", &textCount);
userInputText[textCounter] = textCount;
textCounter += 1;
}
}
사용자가 프로그램을 처음 실행하면 프로그램의이 부분이 건너 뛰고 사용자가 텍스트 파일을 만들고 쓰도록 요청됩니다. 사용자가 정수를 입력하면 텍스트 파일에 쓰여지고 userInputText에 저장되고 프로그램 끝 부분에 화면에 표시됩니다. 모든 것은 잘 동작하며 프로그램이 실행될 때마다 텍스트 파일이 올바르게 추가됩니다. 위 코드에서 생각할 수있는 모든 콤보에 대해 시도했습니다. 나는 fopen (r +), sizeof (int 및 MAXSIZE)를 사용하여 % d을 실험 해 보았습니다. 나중에 프로그램에서 내 fprintf 부분에서 "\ n"을 delimeter로 설정했지만 제거하려고 시도했습니다. 나는 fread를 위해 fgets를 교환했다. Ive는 내가 문제의 똥을 던지고있는 비비와 닮았던 주안점에 도착했다.
나는 사람들이 게으르다 고 생각하지 않고, 정신적으로 장애가있을 수도 있지만 게으른 것은 아닌 쉬운 대답을 찾고 싶지 않습니다.
제안 사항?
감사합니다,
마이크
프로그램을 실행하면 실제로 어떻게됩니까? – Hassan
정확히 무엇을하려고하십니까 *? 이 코드는'FILE *'스트림의 형식화 된 텍스트 입력에서 정수를 읽으려고 시도합니다. 그런데 이상한 이유로 당신은 방금 텍스트로 읽은 바로 그 값으로 라인 처리에 사용하는 * 동일한 텍스트 버퍼 *를 업데이트합니다 ,하지만 이제 int 변환 결과. 그게 당신의 의도라면 (그리고 나는 그것이 어떻게 될 수 있는지는 알 수 없습니다.) 그래도 되겠지만, 읽은 각각의 새로운 줄에 방금 저장 한 가치를 날려 버리고 있다는 것을 깨닫고 있습니까? – WhozCraig
처음 프로그램을 실행할 때. 그것은 사용자에게 숫자를 입력하도록 요청합니다. 사용자가 -999를 입력 할 때까지 while 루프에서 scanf (% d)를 수행합니다. 사용자가 반복되는 동안 숫자는 userInputText []에 저장되고 카운터는 아래 첨자에 대해 증가됩니다. 그런 다음 fprintf (textPointer, "% d \ n", textTemp); 파일을 텍스트 파일에 씁니다. 이 시점까지 배열과 텍스트 파일은 괜찮습니다. 사용자가 더 많은 숫자를 입력 할 수있게하기 전에 텍스트 파일을 기반으로 배열을 채워야하기 때문에 문제가있는 곳에서 다음 프로그램을 실행합니다. –