#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
их можно увидеть в некоторых из них.