Я новичок здесь и я новичок в программировании на Си. У меня проблема с использованием каналов для копирования одного файла в другой. Мой размер буфера равен 10. Когда я копирую из моего файла in.txt в out.txt, всегда остается «p» в конце таблицы символов. Это просто потому, что мой последний ввод содержит только 9 символов, а десятый символ от предыдущего ввода.
"читатель: msg88 = как нулла р
читатель: msg89 = ariatur? п
«
Что я должен сделать, чтобы почистить свой стол с символами? Я не хочу, чтобы последний "р" на MSG89. Мне нужно, чтобы это были те же файлы, но in.txt не содержит «p» в конце, а out.txt содержит. Когда я использую md5sum, это не то же самое:
197ee73779d545f0d3dc7981131736c0 in.txt
ed36f720a1ffc7e82983545d6305edc3 out.txt
Код:
filefd = open(argv[1], O_RDONLY, 0);
for(int i = 0; read(filefd, message, 10) > 0; i++)
{
printf("writer: msg%d=%s\n", i+1, message);
fflush(stdout);
write(fd[1], message, 10);
usleep(100000);
}
filefd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0666);
for(int i = 0; read(fd[0], message, 10) > 0; i++)
{
printf("reader: msg%d=%s\n", i+1, message);
fflush(stdout);
write(filefd, message, 10);
usleep(120000);
}