Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.07;
Скачать: CL | DM;

Вниз

Прикол в Эклипсе   Найти похожие ветки 

 
Галинка ©   (2007-09-05 17:45) [0]

Пробую программить на Си в Эклипсе. Вроде все было нормально. Но теперь почему-то он обрабатывает сначала ввод (например, scanf), а только потом печатает комменты к вооду. Странно. (( Это как-то лечится?


 
wicked ©   (2007-09-05 17:58) [1]

flush
fflush


 
palva ©   (2007-09-05 17:59) [2]

Бывает, что вывод "застревает" в буфере. Лечится функцией flush. ИМХО при консольных диалогах эту функция обязательно должна использоваться, хотя на многих компиляторах можно обойтись без нее.


 
Галинка ©   (2007-09-05 18:11) [3]

Это точно для Си? Что-то я по ней доку найти не могу ((


 
palva ©   (2007-09-05 21:40) [4]

Вот здесь есть fflush http://www-ccs.ucsd.edu/c/stdio.html


 
Галинка ©   (2007-09-05 22:41) [5]

Спасибо. Я вроде нашла что-то подобное. Но эффект не совсем тот, что ожидался. Или если уже начинаешь работать в потоках, то все надо делать в потоке? И для ввода использовать тогда fscanf/fputs? А для вывода fprintf?


 
palva ©   (2007-09-05 22:58) [6]

> Или если уже начинаешь работать в потоках
Вроде речь шла об обычном си и функциях типа scanf. Ну если в потоках, то там тоже есть flush.


 
palva ©   (2007-09-05 23:20) [7]

#include <iostream>
using namespace std;

int main() {
char buf[100];
cout << "Input now: " << flush;
cin >> buf;
cout << "OK " << buf << endl;
return 0;
}


 
wicked ©   (2007-09-05 23:40) [8]


> Спасибо. Я вроде нашла что-то подобное. Но эффект не совсем
> тот, что ожидался. Или если уже начинаешь работать в потоках,
>  то все надо делать в потоке? И для ввода использовать тогда
> fscanf/fputs? А для вывода fprintf?

потоки - это thread или stream?

> palva ©   (05.09.07 23:20) [7]
> #include <iostream>
> using namespace std;
>
> int main() {
> char buf[100];
> cout << "Input now: " << flush;
> cin >> buf;
> cout << "OK " << buf << endl;
> return 0;
> }

это - не си


 
Игорь Шевченко ©   (2007-09-06 09:30) [9]

Кто-то собирался нас покинуть...


 
Галинка ©   (2007-09-06 13:02) [10]

palva ©   (05.09.07 23:20) [7]

это не совсем тот синтаксис. У меня примерно так:

int chars_ein(void){

char a,b,c;

printf("1.Buchstabe eingeben: ");
do {scanf("%c", &a);} while (getchar() != "\n");
printf("2.Buchstabe eingeben: ");
do {scanf("%c", &b);} while (getchar() != "\n");
printf("3.Buchstabe eingeben: ");
do {scanf("%c", &c);} while (getchar() != "\n");
printf("Sie haben %c, %c und %c eingegeben.", a,b,c);

return 0;
}


 
clickmaker ©   (2007-09-06 13:04) [11]


> do {scanf("%c", &a);} while (getchar() != "\n");

а зачем цикл?


 
Галинка ©   (2007-09-06 13:30) [12]

clickmaker ©   (06.09.07 13:04) [11]

вроде как чтобы пропустить ввод символа "возврат коретки". Т.е. между двумя комментами. Тончее после первого ввода? символ возврата коретки остается в памяти и считается как бы, что второй символ уже введен.


 
clickmaker ©   (2007-09-06 13:41) [13]


> [12] Галинка ©   (06.09.07 13:30)

scanf("%c", &a);
fflush(stdin);


 
palva ©   (2007-09-06 13:46) [14]

Я пробовал это на bcc32

#include <stdio.h>
char buf[11];
int main() {
 printf("Eingeben zeile hier:"); flushall();
 scanf("%10s", buf);
 printf("%s\n", buf);
 return 0;
}


 
Галинка ©   (2007-09-06 13:59) [15]

у меня стоит MinGW+gdb+Eclipse for C/C++. Он вообще не знает функции flush/flushall/fflush (((


 
Галинка ©   (2007-09-06 14:03) [16]

вот код
#include <stdio.h>

int main(){

char begruss[21];
printf("Hallo Welt!!!\n");

printf("Geben Sie bitte einen Satz ein: \n");
scanf("%20s", begruss);
printf("%s\n", begruss);
return 0;
}


а вот результат
hallo
Hallo Welt!!!
Geben Sie bitte einen Satz ein:
hallo


а должно бы быть так
Hallo Welt!!!
Geben Sie bitte einen Satz ein:
hallo
hallo


 
clickmaker ©   (2007-09-06 14:46) [17]


> [16] Галинка ©   (06.09.07 14:03)

а iostream и cin / cout в этом MinGW+gdb+Eclipse for C/C++ есть?


 
Галинка ©   (2007-09-06 14:57) [18]

fflush нашла. Но не помогло. Ощущение именно что очередь ввода выполняется сначала, а очередь вывода после. Они не смешиваются ((


 
palva ©   (2007-09-06 15:03) [19]

Вот у них
http://www.tutorials.de/forum/c-c/255429-c-programm-xp-eclipse-cygwin-soll-notepad-fenster-mit-datei-oeffnen.html
fflush после printf почему-то работает.


 
Галинка ©   (2007-09-06 15:21) [20]

действительно. Работает. Но почему надо чистить буфер вывода? Т.е. то что стоит в скобках, попадает только в буфер, а на экране не отображается? Или я что-то совсем не пойму (( И почему под Линуксом все нормально работает?


 
KSergey ©   (2007-09-06 15:31) [21]

Чудеса телепатии в первых жекомментах! ПОразительно!
Я по вопросу было подумал, что проблемы при работе с Eclips...



Страницы: 1 вся ветка

Текущий архив: 2007.10.07;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.016 c
15-1189065156
Rimd
2007-09-06 11:52
2007.10.07
help по WinApi


2-1189329231
новичёк
2007-09-09 13:13
2007.10.07
помогите с IdTcpClient


1-1185182649
nejest
2007-07-23 13:24
2007.10.07
Не работает метод с параметром в виде переменной при вызове извне


2-1189425402
ссссс
2007-09-10 15:56
2007.10.07
чтото не так


1-1183471965
Kolan
2007-07-03 18:12
2007.10.07
Придумал архетиктуру с пакетами и медиатором, помогите реализоват