You should provide a compiling code. I'll assume that `n` and `m` are `int`, but you should have added their declaration. - You should use explicit names for variables. `n` is a line count, so call it `line_count`. `m` is `column_count`. - You should check the return values of `scanf` to be sure you handle gracefully EOF and bad input. - You print "Error, number of colums/ligns < 1. \n" every time, so the user can't know if it's the lines or the columns or both that are < 1. - The english word is "lines", not "ligns". - Your checks are too complicated and redundants. The entire if/else block can be replaced by this: while(*line_count < 1) { printf("Error, number of lines < 1. \n"); scanf("%d", line_count); } while(*column_count < 1) { printf("Error, number of colums < 1. \n"); scanf("%d", column_count); } printf("Number of lines : %x, Number of columns : %x \n", *line_count, *column_count);