파일에 쓰기 위해 write() 시스템 호출을 가져 오는 데 문제가 있습니다. 지금까지 바이너리 파일이라고 불리는 파일에만 횡설수설을 인쇄했습니다. 나는 우리가 어떻게 든 write()를 미리 포맷팅해야한다는 것을 안다.파일에 쓸 write() 시스템 호출 받기
실제로 텍스트 파일에서 작성/쓰기하려면 어떻게해야합니까?
void writeNumbers(int array[], int size, char* fname, int hexFlag) {
int fp;
int i;
char buf[512];
fp = open(fname, O_WRONLY | O_CREAT | O_APPEND);
if (fp < 0) {
close(fp);
char msg[] = "Cannot write";
write(STDOUT_FILENO, msg, sizeof(msg) - 1);
exit(1);
}
if (hexFlag == 0) {
for (i = 0; i < size; i++) {
snprintf(buf, sizeof(int), "%d ", array[i]);
write(fp, buf, sizeof(buf));
}
} else {
for (i = 0; i < size; i++) {
snprintf(buf, sizeof(int), "%x ", array[i]);
write(fp, buf, sizeof(int));
}
}
write(fp, "message", sizeof(buf));
close(fp);
}
여기에 int 배열을 16 진수 또는 10 진수 형식으로 인쇄하려고합니다.
다음 줄 : if (fp <0) { close (fp); 열리지 않은 파일을 닫을 수 없으므로 올바르지 않습니다. 따라서 해당 코드 블록에서 'close (fp)'행을 제거하십시오. – user3629249
이 줄은 다음과 같습니다 : write (STDOUT_FILENO, msg, sizeof (msg) -1); 다음과 같아야합니다 : write (STDOUT_FILENO, msg, strlen (msg)); – user3629249
이 줄은 : write (fp, buf, sizeof (buf)); 다음과 같아야합니다 : write (fp, buf, strlen (buf)); – user3629249