아래에 표시된 함수가 호출되면 문자열의 특정 부분을 텍스트 파일에 씁니다. 그것은 때때로 문자를 제거 할 것이므로 낙뢰 번호는 "ghtning strik number"로 나옵니다. 스트라이크 번호를 캐릭터로 올바르게 표시 한 적이 없으며 항상 "번개 수 :"로 표시됩니다. 나는 문제가 strcat와 있을지도 모른다라고 생각한다. 그러나 나는 정확하게 도움이 될 것 인 이유를 정확하게 이해할 수 없다.fwrite와 strcat는 문자열을 자르고 넌센스 값을 쓰는 것
void recordLightningStrike(int strikeNumber, char fileName[], FILE *filePointer)
{
time_t systemTime;
struct tm *UTCTime;
char numberOfStrikes[6];
char strikeTime[24];
char stringOne[25];
char stringTwo[55];
//char finalString[200];
itoa(strikeNumber, numberOfStrikes, 10);
time(&systemTime);
UTCTime = localtime(&systemTime);
strcpy(strikeTime, asctime(UTCTime));
strcpy(stringOne, "Lightning Strike Number: ");
strcpy(stringTwo, "Lightning Strike Occurred at: ");
strcat(stringOne, numberOfStrikes);
strcat(stringTwo, strikeTime);
//strcpy(finalString, stringOne);
//strcat(finalString, stringTwo);
printf(" %s %c ", stringOne, '\n');
FILE *openPointer = fopen(fileName, "a");
if(openPointer!=NULL)
{
fwrite(stringOne, sizeof(char), sizeof(stringOne), openPointer);
fwrite(stringTwo, sizeof(char), sizeof(stringTwo), openPointer);
}
fclose(openPointer);
}
나 strlen 고정 정크 사용에 대한 귀하의 제안에도, 그러나, 문제를 값 나는 stringOne의 크기를 60으로 늘려 여전히 파업의 횟수를 늘 렸습니다. 그러나 fprintf를 사용하여 문제를 해결했습니다. 감사합니다. fwrite가 작동하지 않는 이유에 대한 통찰력이 있다면 그 점이 인정 될 것입니다. – user1505399