Как я подошел к своему проекту «_Printf» в ALX

«Успех — это сумма небольших усилий, повторяемых изо дня в день». -Роберт С.

Прежде всего, если вы оказались здесь из-за проекта «_printf»в«0x11. C — printf»в учебной программе alx, приветствую вас, мои дорогие друзья-выпускники. И, тем не менее, другие друзья, которые пришли сюда также, чтобы либо собрать информацию, либо узнать больше о вариативных функциях. Я попытаюсь объяснить свой опыт работы с данным проектом и что _printf примерно так же, как и несколько примеров.

Проект парного программирования завершен в рамках учебного плана по низкоуровневому программированию и алгоритмам в ALX (организация по развитию лидерства, трудоустройства и предпринимательства). Нам было поручено чтобы закодировать функцию с именем "_printf", которая копирует функцию стандартной библиотеки C,printf().

_printf()

Для продвинутого новичка :) программа была немного запутанной, но затем я следовал надлежащему процессу, как нас учили. Благодаря большому мозговому штурму с моим партнером и встречам на белой доске и Google, мы смогли начать путешествие по программированию, сложное, я бы сказал ☺︎.

Обязательные задачи немного упростились, нам сказали обрабатывать определенные спецификаторы формата. Затем мы перешли к продвинутым задачам, где все усложнилось. К счастью, Техника Помидора окупилась. С результативными заслуженными перерывами мы вылетели из воды.

После выполнения каждой задачи мы скомпилировали наш код с заданными флагами gcc «gcc -Wall -Werror -Wextra -pedantic -std=gnu89 *.c» и убедились, что все крайние случаи соблюдены с правильным отображением вывода. Затем мы отправились на github, чтобы использовать средство проверки. Пытаясь так же меньше полагаться на шашки, он по-прежнему прокладывает себе дорогу своими красными светящимися глазами, но в конце концов мы победили, как сказал бы Фред Сваникер, «Делай трудные дела».

Благодаря этому проекту я узнал гораздо больше о функциях с переменным числом аргументов, системных вызовах, групповой обработке проектов на github и различных способах решения алгоритмических задач. Сложнее всего было определить объем возможностей «printf()», а затем попытаться сопоставить это с ограничениями, установленными ALX.

Дополнительное описание _printf()

Прототип:

int _printf(const char *format, …);

Прототип _printf() определен в заголовочном файле "main.h". Когда вы используете функцию _printf(), она печатает строку, указанную форматом, в стандартный вывод "stdout". Формат также может содержать некоторые спецификаторы, начинающиеся с "%", который указывает, как преобразуются последующие переменные аргументы (доступ к которым осуществляется через средства аргументов переменной длины в stdarg). для вывода.

Проще говоря, они работают как дополнительные аргументы функции _printf().

Функция возвращает:

  • Количество символов, записанных в случае успеха (исключая завершающий нулевой байт, используемый для завершения вывода в строки)
  • Отрицательное значение, если не удалось.

Пример:

#include "main.h"

int main(void)
{ 
  char str[] = " Alx!"; 
  printf("Hello,%s\n", str); 
  return (0); 
}

Выход:

Hello Alx!

Узнайте больше об использовании спецификаторов здесь и дополнительную информацию о _printf() на моем README.mdздесь.

Поскольку _printf()является функцией с переменным числом аргументов, мы можем передать неопределенное количество аргументов, которые хотим распечатать.

Путь был трудным, но, к счастью, нашим наставникам в ALX Africa и их усилиям по обновлению нашего мышления, мы можем #DOHARDTHINGS.

Вот некоторые дополнительные ресурсы, которые я нашел полезными во время этого проекта, Наслаждайтесь.