#include <stdio.h>/* подсчет вводимых символов; 1-я версия */ main(){ long nc; nc = 0; while (getchar() != EOF) ++nc; printf(“%ld\n”, nc);}
#include <stdio.h>/* подсчет цифр, символов-разделителей и прочих символов */main(){ int с, i, nwhite, nother; int ndigit[10]; nwhite = nother = 0; for (i = 0; i < 10, ++i) ndigit[i]= 0; while ((c = getchar()) != EOF) if (c >='0' && с <= '9') ++ndigit[c – '0']; else if (c == ' ' || c == '\n' || c == '\t') ++nwhite; else ++nother; printf("цифры ="); for (i = 0; i < 10; ++i) printf("%d", ndigit[i]); printf(", символы-разделители =%d, прочие =%d\n", nwhite, nother);}
lesson_1.c:15:13: ошибка: в программе обнаружен некорректный символ «\200»lesson_1.c:15:13: ошибка: в программе обнаружен некорректный символ «\223»lesson_1.c:15:28: ошибка: expected «]» before '0' ++ndigit[c – '0'];
Вот, будучи знакомым уже с Python, взялся разобраться с этим чудом С.
/* подсчет вводимых символов; 1-я версия */
D:\moe\prg\98-dmc>proba02сысыфс7^CD:\moe\prg\98-dmc>proba02 < aaa.txt13
ЦитироватьВот, будучи знакомым уже с Python, взялся разобраться с этим чудом С.Ох, вряд-ли это приведёт к чему-то хорошему...Когда я 12 лет назад познакомился с Питоном, я забросил С++ как страшный сон, и с тех пор он мне не был нужен. С не такой кривой, как С++, но сложностей в нём тоже хватает.Цитировать/* подсчет вводимых символов; 1-я версия */ Скачал компилятор, скомпилил, вот вывод программы:КодD:\moe\prg\98-dmc>proba02сысыфс7^CD:\moe\prg\98-dmc>proba02 < aaa.txt13т.е. у меня программа работает.
Так, у тебя работает, почему не работает тогда у меня?
Потому что линукс? Где искать различия написания кода на С для разных осей?
#include <stdio.h> main(){int nc;nc = 0;while (getchar() != EOF){++nc;printf("%ld\n", nc);}//без этой скобки в цикл входит только увеличение переменной nc, а функция printf//выполнится только когда getchar() даст == -1;}
фывук1234567891011
#include <stdio.h>/* подсчет вводимых символов; 1-я версия */ main(){ long nc; nc = 0; while (getchar() != EOF) ++nc; printf("%ld\n", nc);}
Это что?
getchar() != EOF
D:\moe\prg\98-dmc>proba02 < aaa.txt
Жму Enter - ничего
getchar() != '\n'
ЦитироватьЭто что?Вывод программы в каждой итерации цикла. Верни первый вариант программы.По-моему, ты не понял другой момент:Кодgetchar() != EOFэтот самый EOF при вводе с клавиатуры случится только, если остановить программу. В винде через Ctrl-Pause, в линухе Ctrl-C.Именно поэтому я направлял в программу текстовый файл:КодD:\moe\prg\98-dmc>proba02 < aaa.txtВ линуксе синтаксис направления ввода такой же, попробуй. В случае с файлом, EOF случится, когда файл закончится.
Именно поэтому я направлял в программу текстовый файл:
[leonid@localhost C]$ gcc -o lesson_1 lesson_1.clesson_1.c: В функции «main»:lesson_1.c:6:5: ошибка: в программе обнаружен некорректный символ «\321» int с, i, nwhite, nother; ^lesson_1.c:6:5: ошибка: в программе обнаружен некорректный символ «\201»lesson_1.c:6:11: ошибка: expected identifier or «(» before «,» token int с, i, nwhite, nother; ^lesson_1.c:9:5: ошибка: «nwhite» undeclared (first use in this function) nwhite = nother = 0; ^lesson_1.c:9:5: замечание: each undeclared identifier is reported only once for each function it appears inlesson_1.c:9:14: ошибка: «nother» undeclared (first use in this function) nwhite = nother = 0; ^lesson_1.c:10:10: ошибка: «i» undeclared (first use in this function) for (i = 0; i < 10, ++i) ^lesson_1.c:10:28: ошибка: expected «;» before «)» token for (i = 0; i < 10, ++i) ^lesson_1.c:13:13: ошибка: «c» undeclared (first use in this function) while ((c = getchar()) != EOF) ^lesson_1.c:14:9: ошибка: в программе обнаружен некорректный символ «\321» if (c >='0' && с <= '9') ^lesson_1.c:14:9: ошибка: в программе обнаружен некорректный символ «\201»lesson_1.c:14:27: ошибка: expected expression before «<=» token if (c >='0' && с <= '9') ^lesson_1.c:15:13: ошибка: в программе обнаружен некорректный символ «\342» ++ndigit[c – '0']; ^lesson_1.c:15:13: ошибка: в программе обнаружен некорректный символ «\200»lesson_1.c:15:13: ошибка: в программе обнаружен некорректный символ «\223»lesson_1.c:15:28: ошибка: expected «]» before '0' ++ndigit[c – '0']; ^[leonid@localhost C]$
#include <stdio.h>/* подсчет цифр, символов-разделителей и прочих символов */main(){ int c, i, nwhite, nother; int ndigit[10]; nwhite = nother = 0; for (i = 0; i < 10, ++i;) ndigit[i] = 0; while ((c = getchar()) != EOF) if (c >='0' && c <= '9') ++ndigit[c - '0']; else if (c == ' ' || c == '\n' || c == '\t') ++nwhite; else ++nother; printf("цифры ="); for (i = 0; i < 10; ++i) printf("%d", ndigit[i]); printf(", символы-разделители =%d, прочие =%d\n", nwhite, nother);}
derty-sdf rty fgjj 1 4 twsyjsdfgh fhgj dtyh14509
D:\moe\prg\98-dmc>proba03 < aaa.txt╤Ж╨╕╤Д╤А╤Л =0065000000, ╤Б╨╕╨╝╨▓╨╛╨╗╤Л-╤А╨░╨╖╨┤╨╡╨╗╨╕╤В╨╡╨╗╨╕ =6, ╨┐╤А╨╛╤З╨╕╨╡ =30
striver@striver-AOA110:~$ proba03 < aaa.txtцифры =0065000000, символы-разделители =6, прочие =30
Попробовал в Линуксе:Кодstriver@striver-AOA110:~$ proba03 < aaa.txtцифры =0065000000, символы-разделители =6, прочие =30
for (i = 0; i < 10, ++i) ndigit[i] = 0;
for (i = 0; i < 10; ++i) ndigit[i] = 0;
lesson_1.c: В функции «main»:lesson_1.c:10:28: ошибка: expected «;» before «)» token for (i = 0; i < 10, ++i)Сборка завершилась с ошибкой.