Если это домашнее задание, и вы действительно ограничены только стандартной библиотекой C, вы должны ознакомиться с официальной спецификацией формата файла PNG: http://www.w3.org/TR/PNG/. Однако вы уверены, что вам действительно нужно декодировать файл PNG? Если все, что вам нужно сделать, это как-то отобразить это, вы идете по неверному пути.
Написание декодера для любого общего файла PNG будет довольно сложным и длительным, но не слишком плохим для простых. Фактически, поскольку формат PNG позволяет сжимать его фрагменты, для его выполнения только со стандартными библиотеками C потребуется реализация gzip декомпрессии (разумное домашнее задание для студентов среднего уровня, но я полагаю, что вы потратил бы много времени на обсуждение алгоритмов сжатия до того, как это было назначено вам)
Однако, это не очень сложно, если вы ограничиваете себя несжатые, чересстрочные файлы PNG. Однажды я написал в Python декодер, который обрабатывал только простые случаи за пару часов, поэтому я уверен, что это будет выполнимо в C.