Во-первых, вы не должны использовать необработанный ввод / вывод Unix с open
и read
, если вы только изучаете C. Начните со стандартного ввода-вывода C с fopen
и fread
/ fscanf
/ fgets
и пр.
Во-вторых, вы читаете последовательные фрагменты файла в один и тот же буфер, каждый раз перезаписываете буфер и обрабатываете только последнее содержимое буфера.
В-третьих, ничто не гарантирует, что ваш буфер будет нулевым, если вы прочитаете его с помощью read()
. На самом деле, обычно это не так.
В-четвертых, вы не используете переменную i
в теле вашего цикла. Я не могу точно сказать, для чего вы стреляли здесь, но одно и то же действие с одними и теми же данными, конечно же, было не так.
В-пятых, всегда компилируйте с наиболее полными настройками предупреждений, которые вы можете соблюдать - по крайней мере -Wall
с GCC. Он должен был жаловаться, что вы звоните read()
без включения <unistd.h>
.