Code: #include <windows.h> int main(int argc, char* argv[]) { char in[255];char out[255];int i;scanf("%s",&in);for(i=0;i<=lstrlen(in);i++){out[i]=in[i];}printf("%s",out);return 0;} Я гений? ЗЫ У меня редактор такой и не пашет.
V obshem ya ispravil vot tak: Code: int c, nl, t, space, n, i, l; char array[100]; ......... while ((c = getchar()) != EOF) { ........ else { array[i] = (char )c; /*array[i] = c;*/ ++i; } Tolko v chem to dopustil oshibku seichas eksperementiruu.
нет getchar возвращает int , на случай скан-кодов со времен Dos так уж клавиатура устроена что количество кодов которое она может выдать больше чем 255! попробуй понять мою строку for(i=0;(array=(char )getchar())!=EOF;i++) ....
a est ved raznica mejdu ++i; and i++; V kingie bilo napisano chto ++i; eto increment. A ostalnoe xz potom obyasnyat*))))))) eto ya ponyal tak, v massiv dobavlyautsa dannie poka idet vvod i poka virajenie ne ravno EOF. v obshem seihas poprobuu.
i++ и ++i отличаются тем когда должно быть увеличение i i++ после текущей ситуации ++i до текущей ситуации уловие понял правильно.... ввод идет прямо в массив заодно проверяясь самое смешное будет ниже for(i=0;(array=(char )getchar())!=EOF;i++) { switch(array) { case '\t': case '1': case '2': case '3': case '4': case '5': i--; //фильтруются все символы от 1 до 5 и табуляции } // за счет смещения текущего положения счетчика цикла } array=0; //все строки в С должны завершаться нулем printf("%s",array) // при указании массива без индексов берется его адрес
Code: #include <stdio.h> main() { int c, nl, t, space, n, i, l; char array[100]; nl = c = t = space = n = 0; for (i = 0; i < 100; ++i) { array[i] = 0; } i = 0; for(i=0;(array[i]=(char )getchar())!=EOF;i++) { if (array[i] == '\n') { printf("\nSymbol: "); for (l = 0; l < i; ++l) { printf("%d ", array[l]); } printf("\nTab: %d\nSpace: %d\nNumber: %d\n", t, space, n); break; } else if (c == '\t') { ++t; } else if (c == ' ') { ++space; } else if (c >= '0' && c <= '9') { ++n; } } } ya perepisal kod nemonogo podrugomu, On vse ravno vidaet takoi resultat:
>> ya perepisal kod nemonogo podrugomu, On vse ravno vidaet takoi resultat ну дык, а какой тебе результат нужен, если у тебя нету знака табуляции, новой строки и т.д.?
ya ehe ot seba dobavil case '\n': break; chtob is programmi vihodit bilo mojno, t.e. iz cikla. no on chto to ne vihodit....sori ya swith prosto ehe ne prohodil...
в цикле for //// ты должен считать а уж по окончании выдавать результаты , а ты при первом же нахождении кода "возврата строки" пытаешься напечатать! Code: t=space=n=0; for(i=0;(array[i]=(char )getchar())!=EOF;i++) { if(array[i]=='\t') t++; if(array[i]>='0' && array[i]<='9') n++; if(array[i]==' ') space++; } array[i]=0; //все строки в С должны завершаться нулем printf("Symbol:%s\r\n",array); // при указании массива без индексов берется его адрес printf("Tab:%d\r\n",t); printf("Space:%d\r\n",space); printf("Number:%d\r\n",n);
ну ты выводишь каждый элемент как число printf("%d ", array[l]); если хочешь как символ printf("%с ", array[l]); но взгляни ВЫШЕ как я вывожу весь массив одной 0-завершенной строкой... printf("%s",array); //вывод строки символов пока не встретится 0!
chvaki ya ponyal, chtob vivelsya simvol nujno bilo ispolzovat vmesto %d, %s. Spasibo bolshoe. Dumau do zavtra rashiru funkcional. =))
ну это стандартно, что ++i сперва инкрементируется а потом используется а i++ сперва используется а потом инкрементируется..