#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
int main () {
char grade[5];
char name[30];
int fd = creat("notas.txt", 0644);
if (fd == -1) {
perror("notas.txt");
return 1;
}
while (1) {
scanf("%s %s", name, grade);
if (strcmp(name, "end") != 0) {
write(fd, name, 30);
write(fd, "\t", 1);
write(fd, grade, 5);
write(fd, "\n", 1);
} else {
close(fd);
return 0;
}
}
}
Привет всем. Я пытаюсь войти в * nix Kernel API-программирование, и я написал вышеупомянутую программу. Он читает имена и оценки из командной строки, а затем записывает их в файл. Однако файл искажен, я могу только cat
его (не открывается в текстовом редакторе), и мои данные появляются среди потока искаженных случайных символов. После cat
в файле мое приглашение также содержит несколько случайных символов, таких как 1C2;1C3
(...).
Почему это происходит?
Спасибо всем.