Можно ли написать программу «hello world» в C без использования функции printf? (В то же время сохраняя программу относительно в несколько строк)«Привет мир» в C без printf?
ответ
Это должно работать:
int main (void)
{
puts("Hello, World!");
return 0;
}
Почему вы не хотите использовать Printf? Я не могу думать ни о какой причине.
Не то, чтобы я «Не хочу использовать его, это был вопрос« возможно ли это », потому что я новичок в C. – user1869465
На самом деле, если ваш прецедент - это просто нормальная строка с линией перевода в конце, она делает больше смысл _not_ использовать 'printf'. 'puts' почти наверняка более эффективен, так как ему не нужно беспокоиться о форматировании символов. +1, как только «главная» была изменена на одну из канонических форм :-) – paxdiablo
@paxdiablo Я видел GCC-оптимизацию 'printf (« строковый литерал »);' в 'puts (« строковый литерал »);'. Я обнаружил это, потому что это нарушило мою попытку захватить 'printf()', используя динамическую библиотечную инъекцию: O – 2013-02-10 06:35:28
write(stdout, "hello world", strlen("hello world"));
Err, 'stdout' - это _stream, _ не файловый дескриптор. Возможно, вы имели в виду 'fwrite'? Тем более, что в C нет «писать». – paxdiablo
Hrm, справа. Измените stdout на номер 1. Thx. – PQuinn
или 2 для записи в stderr, а также включить unistd.h для записи и string.h для strlen (или просто поместить целочисленное значение, так как это постоянная строка) – technosaurus
Это смешно альтернатива просто использовать puts("hello world\n");
#include <stdio.h>
int main(void){
char *s="hello world\n";
while (*s) putchar(*s++);
}
Ну, если мы будем включать глупые примеры (да, я смотрю на вас, technosauraus), я бы идти с:
#include <stdio.h>
void makeItSo (char *str) {
if (*str == '\0') return;
makeItSo (str + 1);
putchar (*str);
}
int main (void) {
makeItSo ("\ndlrow olleH");
return 0;
}
Только не делайте это на самом деле длинные строки или выяснить, что переполнение стека действительно означает :-)
+1 для дополнительной глупости, так как реверсирование струны не требовалось. :) –
- 1. Привет, мир printf проблемы в сборке
- 2. Что означает printf (_ («привет, мир \ n»))?
- 3. Привет мир без использования библиотек
- 4. «Привет, мир!» freeze in C++
- 5. x86 MASM привет мир
- 6. Ошибка в компиляции привет мир в c
- 7. C++ привет мир не работает?
- 8. C# привет мир не компилируется
- 9. C++ открытое окно привет мир
- 10. Libspotify простой мир привет
- 11. Печать «Привет» вместо «Привет, мир!»
- 12. My C "Привет, мир!" программа не компилируется
- 13. Привет, мир в Prolog
- 14. Привет, мир в VBS
- 15. Привет, мир! в Brainfuck
- 16. Привет, мир в pyqt?
- 17. Почему «привет» + + '/' + "мир" == "hello47world"?
- 18. i18n Привет, мир
- 19. CUDA привет мир не удалось
- 20. «Привет мир» ошибка учебник
- 21. Привет, мир для CUDA.Net
- 22. Linux Shellcode «Привет, мир!»
- 23. печать "привет мир!" используя чтение в C
- 24. Печать привет мир без основного метода
- 25. Привет, мир без основного метода (от Horstmann)
- 26. Objdump привет мир инструкции вызова
- 27. Привет, мир app
- 28. привет мир Jsp ошибка
- 29. Ассамблея, привет мир вопрос
- 30. Привет, мир FBJS
Вы всегда можете использовать puts, fwrite и т. Д. – nhahtdh
'write (1,« hello world », 11);' – technosaurus
@technosaurus: Это не часть стандарта C, но может быть частью другого стандарта ... – nhahtdh