Hi guys, Introduction (to make it clear why I am asking this question). Exactly one year ago, I thought to throw OS Windows and switch to UNIX OS. A whole summer of 2011 I studied the various UNIX like operating systems, and stopped on FreeBSD OS. Even last fall, I do not know how to create / read / watch, even plain text files. Through this forum, I somehow mastered this OS, and now, after seven months, I can freely work on FreeBSD. When I worked on the Windows OS, I was fond of programming, but I used C++ and IDE Borland Builder - bad Windows way! Now I want to continue to study programming, but only ANSI C (c89, c99, c11). Now I do not use the IDE. My tools: devel/geany or editors/vim, graphics/dia, devel/doxygen and BSD make. That's all what I learned! In order to begin a detailed study of ANSI C, I decided to write a small program coding of text data. She has a very simple algorithm, but it's enough to make that first step. My question. Here's the source code of my program, could you, as the more experienced programmers look at it and give me what some suggestions / comments / criticism / cry. I am very interested to know: I'm moving in the right direction? I am interested in your criticism! Details for the compilation: Directory structure: Code: ~/yep/ |__ bin/ |__ doc/ |__ src/ |__ .. |__ . Sources: C code, my program. ~/yep/src/yep.c (View here!) Doxyfile ~/yep/src/Doxyfile (View here!) Makefile ~/yep/src/Makefile Code: # Project: yep # Date created: April 22, 2012 # Whom: valsorym <email@example.com> # binary EXECUTABLE = $(.CURDIR)/../bin/yep # compiler CC = cc CFLAGS = -Wall -ansi -std=c99 LDFLAGS = -O2 # targets all: $(EXECUTABLE) $(EXECUTABLE): yep.o $(CC) $(CFLAGS) -o $@ $> $(LDFLAGS) yep.o: yep.c $(CC) $(CFLAGS) -c $> .PHONY: all clean run install clean: rm -f *.out *.o *.core run: $(EXECUTABLE) install: cp $(EXECUTABLE) ./bin/ In advance, Thank you all!