Напишите строку с аргументами функции на языке Си

#c

Вопрос:

Я совершенно новичок в C и хочу написать функцию :

     #include <unistd.h> //import write...
    void ft_putchar(char str[20]) {            
       write(1, amp;str, 19);
   }
    
    char main() {       
        char str2[20] = "GeeksforGeeks";
        ft_putchar(str2[20]);
        return(0);
    }
 

Комментарии:

1. Вы не указываете размер строки, когда используете ее в качестве аргумента. Просто ft_putchar(str2)

2. В аргументе [20] указывается индекс, а не размер.

3. Глупый вопрос: Я заметил, что многие вопросы, в которых они повторно реализуют встроенные функции, используют префикс «ft_». Откуда это берется?

4. Каэрдин, Совет: экономьте время, будьте более продуктивны. Включите все предупреждения компилятора. Тогда быстро поймите, что ft_putchar(str2[20]); это проблема. Быстрее, чем публикация в Stackoverflow.

5. @Barmar: Я тоже это видел (самая ранняя ссылка, которую я нашел на SO, была с 2013-12-01 , хотя она не охватывает «откуда взялось название»). Смотрите Reddit , GitHub и так далее. Поиск в Google, который я использовал, был «ft_putchar-site:stackoverflow.com». Вы могли бы попробовать «ft_putchar 42», возможно, с «-site:stackoverflow.com» срок тоже. ft_ Приставка, по-видимому, означает «сорок два».

Ответ №1:

Надеюсь, это вам немного поможет 🙂

 #include <unistd.h> //import write...

void ft_putchar(char *str) {   // the size of the buffer is not required         
   write(1, str, strlen(str)); // 2nd argument is a char*, not a char **
                               // 3rd one is the actual length of your                
                               // string, not the size of the buffer
}

int main() {       
    char str2[20] = "GeeksforGeeks";
    ft_putchar(str2); // the size of the buffer is not required
    return(0);
}
 

Комментарии:

1. Недостающий <string.h> . Неизвестно, но, вероятно, идея состоит в том, чтобы студенты повторно реализовали функциональность стандартной библиотеки без использования стандартной библиотеки. Подобные вопросы возникают здесь время от времени, и ft_strlen их можно увидеть в некоторых из них.