Пользователь вводит для 2 студентов имя, идентификатор, дату рождения, пол и семейное положение. Затем я должен писать каждый вход в файл. Это мой код.C - write() входные данные в файл
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
int main()
{
int fd, i;
char name[20], id[10], dob[10], gender[7], status[10];
fd = open("lab45.txt", O_WRONLY|O_CREAT, S_IRWXU);
for (i = 1; i < 3; i = i + 1)
{
printf("\n\nStudent %d", i);
printf("\n-Name: ");
scanf(" %[^\n]", name);
printf("\n-ID: ");
scanf("%s", id);
printf("\n-Date of birth: ");
scanf("%s", dob);
printf("\n-Gender: ");
scanf("%s", gender);
printf("\n-Marital status: ");
scanf("%s", status);
write(fd, &name, 20);
write(fd, &id, 10);
write(fd, &dob, 10);
write(fd, &gender, 7);
write(fd, &status, 10);
}
close(fd);
}
Я ввожу следующее:
Студент 1
-Name: John Smith
-ID: JS3019
-Date рождения: 14/10/90
-Gender: мужчина
-Marital положение:
Студент 2
-Name: Jane Doe
-ID: JD0192
-Date рождения: 13/12/99
-Gender: женщина
-Марифальное положение: женат
Это то, что я вижу в текстовом файле впоследствии.
Джон Смит \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ A0 @ \ 00JS3019 \ 00 \ 00 \ C0 \ F414/10/90 \ 00 \ 00male \ 00 \ 00 \ 00single \ 00 \ 00 \ EDJane Doe \ 00h \ 00 \ 00 \ 00 \ 00 \ 00 \ 00 \ A0 @ \ 00JD0192 \ 00 \ 00 \ C0 \ F413/12/99 \ 00 \ 00female \ 00married \ 00 \ ED
Это нормально или что-то не так в моем коде?
Вы записываете строки фиксированной ширины в файл, поэтому вы заставляют их дополнять какой-то мусор, если фактические данные короче. –
«Странные» персонажи - это мусор. Есть ли лучший способ написать строки в файл? – Saiyan
@phantom 'fprintf' подобен' printf', но записывается в файл. – zstewart