Важным отличием является то, что вы подразумеваете под «проверкой» этих программ.Я предполагаю, что вы не имеете в виду на самом деле компилировать / запускать их во время выполнения (что для меня значит отражение), потому что вы не можете проверить их программную структуру из скомпилированной программы.
Это означает, что вы будете обрабатывать текстовые файлы исходного текста, и хотя это намного проще практически во всех языках сценариев, в C:
- * все не так плохо1006 * Узнайте, как получить список всех файлов для обработки.Либо поместите все имена файлов в индексный файл, итерируйте по этому файлу, ИЛИ получите список файлов, используя
readdir
или предпочтительно библиотеку (Boost), чтобы сделать это за вас. Для каждого файла откройте его и прочитайте каждую строку (Google, это тривиально)
Для каждой строки проверьте его в соответствии со своими правилами и соберите необходимые результаты.
Сохранение результатов в массиве или запись в файл и т. Д.
Редактирование - если вы хотите проверить, есть ли программы ваших учениковвыполнить (иначе, скомпилировать / запустить их во время выполнения), вам, вероятно, потребуется execve
отключить некоторые вызовы gcc (если вы хотите скомпилировать), а затем снова запустить программу.Тем не менее, execve
сообщит вам только, если команда не выполнена.Получение выходных данных из других программ означало бы открытие каналов с popen
.Если вы обнаружите, что готовы сделать это, поверните назад, вы зашли слишком далеко.