Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
Галинка ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.055 c
15-1188977256
lead-in
2007-09-05 11:27
2007.10.07
the end


6-1171007451
inex
2007-02-09 10:50
2007.10.07
работа с IdFTP


1-1185336663
Dr. Andrew
2007-07-25 08:11
2007.10.07
Как корректно вызвать функцию function GetIniInt в Inno Setup


2-1187583615
apic
2007-08-20 08:20
2007.10.07
scroll


4-1175752393
аыпвапы
2007-04-05 09:53
2007.10.07
Alt+Tab как запретить в ХР?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский