Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 888
от 26.10.2007, 12:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 481, Экспертов: 65
В номере:Вопросов: 2, Ответов: 6


Вопрос № 106175: Здравствуйте! При програмировании использую gcc под Win. При запуске этой программы например: #include <stdio.h> int main(void) { int dogs; printf("Сколько у вас собак? "); scanf("%d", &do...
Вопрос № 106189: Скажите пожалуйста, как считать строку с клавиатуры в массив?(с пробелами). Ниже приведен вариант, но компилятор почему-то игнорирует cin.getline....

Вопрос № 106.175
Здравствуйте!
При програмировании использую gcc под Win.
При запуске этой программы например:
#include
int main(void)
{
int dogs;
printf("Сколько у вас собак? ");
scanf("%d", &dogs);
printf("Следовательно, у вас %d собак(а, и)! ", dogs);
return 0;
}
в консоле он выводит "иероглифы" вместо латиницы. Что можно сделать для того чтобы он выводил латиницу как надо.
Отправлен: 20.10.2007, 17:18
Вопрос задал: KuchumHan (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: CruelHity
Здравствуйте, KuchumHan!
Здраствуйте вот две функции которые пререводят с Win кодировки в Dos и обратно!
Пропишите в свое проге так:
printf("%s",WinToDos("Сколько у вас собак? "));
или
{
strcpy(buf,WinToDos("Сколько у вас собак? "));
printf("%s",buf);
}
Удачи!!

Приложение:

Ответ отправил: CruelHity (статус: 2-ой класс)
Ответ отправлен: 20.10.2007, 17:27
Оценка за ответ: 5
Комментарий оценки:
Спасибо конечно, только вот что мне выдал компилятор:
g++.exe -x c++ -c C:gccsourceStivPrataListing1-1.c -o C:gccsourceStivPrataListing1-1.o -Wall -fpermissive
C:gccsourceStivPrataListing1-1.c: In function `int main()':
C:gccsourceStivPrataListing1-1.c:5: warning: implicit declaration of function `int WinToDos(...)'
C:gccsourceStivPrataListing1-1.c:5: warning: format argument is not a pointer (arg 2)
C:gccsourceStivPrataListing1-1.c:7: warning: format argument is not a pointer (arg 2)
Success
g++.exe C:gccsourceStivPrataListing1-1.o -o C:gccsourceStivPrataListing1-1.exe -Wall -fpermissive
C:gccsourceStivPrataListing1-1.o(.text+0x5f):Listing1-1.c: undefined reference to `WinToDos'
C:gccsourceStivPrataListing1-1.o(.text+0x9a):Listing1-1.c: undefined reference to `WinToDos'
Failure

Отвечает: kool
Здравствуйте, KuchumHan!
Написать ф-цию перекодировки или
при создании текста программы
в редакторе установить нужную кодировку.
Удачи!

---------
I am.
Ответ отправил: kool (статус: Практикант)
Ответ отправлен: 20.10.2007, 18:34


Вопрос № 106.189
Скажите пожалуйста, как считать строку с клавиатуры в массив?(с пробелами). Ниже приведен вариант, но компилятор почему-то игнорирует cin.getline.

Приложение:

Отправлен: 20.10.2007, 20:36
Вопрос задал: Copogu4 (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: CruelHity
Здравствуйте, Copogu4!
Существует еще в stdio.h функция gets

char *gets(
char *buffer
);
wchar_t *_getws(
wchar_t *buffer
);

вот пример с MSDN

#include <stdio.h>

int main( void )
{
char line[21]; // room for 20 chars + ' gets( line ); // Danger: No way to limit input to 20 chars.
// Much preferable: fgets( line, 21, stdin );
// but you'd have to remove the trailing ' '
printf( "The line entered was: %s ", line );
}
Удачи!
Ответ отправил: CruelHity (статус: 2-ой класс)
Ответ отправлен: 20.10.2007, 20:47

Отвечает: Verena
Здравствуйте, Copogu4!

Что-то в Вашем примере я cin.getline не вижу. Но если раньше она там была, то проверьте, правильно ли Вы указываете параметры: cin.getline (строка_буфер, максимальное_количество_символов_для_считывания). Кстати, в строку надо считывать на один символ меньше, чем объявлено - последний байт идёт на символ конца строки '
char someText [51];
int i;
cout << "Enter the text ";
cin.getline (someText, 50);
cout << "Your string: ";
for (i = 0; i<10; i++)
{
cout << someText[i];
}
return 0;

Удачи!
---------
Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: Студент)
Ответ отправлен: 20.10.2007, 21:01

Отвечает: Lestat de Lionkur
Здравствуйте, Copogu4!
Воспользуйтесь оператором cin.
Ответ смотрите ниже.

Приложение:

Ответ отправил: Lestat de Lionkur (статус: 3-ий класс)
Ответ отправлен: 21.10.2007, 01:31

Отвечает: Попов А.С.
Здравствуйте, Copogu4!
А если так:
#include <stdio.h>
int main()
{
char s[51];
fgets(s, 50, stdin);
cout<<s;
}
Ответ отправил: Попов А.С. (статус: 3-ий класс)
Ответ отправлен: 21.10.2007, 08:22


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.61.1 от 16.10.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное