gcc -o main main.c "-Wl,--wrap=read" -L. -lexample
Написал такую программу но вместо нужно результата она мне выдаёт просто
тест задания такой Создать динамическую библиотеку (dll или so) в которой будут два метода read(<имя текстового файла&gt, который считывает информацию из файла и возвращает тип данных char[], и read(<строка>,<имя текстового файла&gt, который является методом типа void и записывает строку в файл.
Если ошибки в консоли нет, а консоль не выводит то, что нужно, то значит ошибка в коде и в выводимых данных.
printf - print formatted не подходит если есть пробелы в строке, например.
fgets(sentence, 1024, stdin); подойдет лучше, где sentence (это строка, 1024 -длина, stdin -метод)
Такой вывод данных для строк легче использовать.
Это одна из базовых ошибок, не рекомендую копировать чужой код.
Вы используете механизм оборачивания функции read, что подразумевает создание собственной реализации функции read. Это может работать, но есть несколько моментов, которые нужно учесть:
Используйте обратные кавычки (``) вместо угловых кавычек (&lt; и &gt в вашей документации. Таким образом, <имя текстового файла> должно выглядеть как <имя_текстового_файла>.
Вам нужно правильно определить обертку для функции read. В данном случае, это __wrap_read. Убедитесь, что вы используете правильное имя обертки.
Передавайте аргументы из вашей функции main в обертку. Из вашего кода это не видно, но вы должны передать имя файла argv[1] в функцию __wrap_read.
Удостоверьтесь, что ваша библиотека правильно загружается в вашем исполняемом файле main. Проверьте, что файл example.dll находится в том же каталоге, где вы запускаете main, или укажите полный путь к нему.