Вы, вероятно, можете избежать такого кода:
char filename[128];
strcpy(filename, argv[1]);
... и написать код, похожий на этот:
#define BUFSIZE 128
char filename[BUFSIZE];
strncpy(filename, argv[1], BUFSIZE);
StrNcpy-версия strcpy ограничивает количество символов, которые вы можете скопировать,Использование макросов для размеров - это хорошо, поэтому вы можете изменить размер буфера позже и не заполнять свой код магическими числами.
По той же причине вам следует избегать прямого использования fscanf, вы можете использовать функцию для передачи строки фиксированного размера, а не неограниченной.или вы можете сделать что-то вроде этого
strings[STRINGSIZE] = 0;
cnt = cnt % STRINGSIZE;
... так что вы гарантируете, что ваша строка имеет ограничение размера в этих пределах.