Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2008, 15:00   #1
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию Проблема с gets()

Вот небольшая программка:
Код:
#include "iostream"

int main()
{
	setlocale(LC_ALL,"Russian");
	unsigned char st[80];
	printf("Введите строку: ");
	gets(st);
	printf("\n%s",st);
}
При компиляции появляется такая ошибка:
Код:
1>d:\171\171.cpp(21) : error C2664: 'gets' : cannot convert parameter 1 from 'unsigned char [80]' to 'char *'
1>        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Что нужно исправить, что бы программа заработала?
TheWanderer вне форума Ответить с цитированием
Старый 20.11.2008, 15:06   #2
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Подмигивание

Вот в этой строчке:
Цитата:
Сообщение от TheWanderer Посмотреть сообщение
Код:
	unsigned char st[80];
убери слово unsigned, тогда запустится...
StarWorm вне форума Ответить с цитированием
Старый 20.11.2008, 15:12   #3
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию

Необходимо что бы тип переменной был unsigned char.
TheWanderer вне форума Ответить с цитированием
Старый 20.11.2008, 15:20   #4
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Так ты полностью прогу приведи... Я тебе потом и скажу что где сделать... А то так мы двлеко не уедем
StarWorm вне форума Ответить с цитированием
Старый 20.11.2008, 17:04   #5
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

TheWanderer, тогда явно приведи к char* при передачи в gets()
filosof_x86 вне форума Ответить с цитированием
Старый 21.11.2008, 02:13   #6
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию

В общем надо написать программу, которая в введенной с клавиатуры строке преобразует строчные буквы русского алфавита в прописные.
Вот написал программу где unsigned char поменял на char. Но программа не работает так как надо…
Код:
#include "iostream"

int main()
{
	char st[80];
	int i;
	printf("Bedute stroky: ");
	gets_s(st);
	i=0;
	while(st[i])
	{
		if(st[i]>='а'&&st[i]<='я')
			st[i]-=32;
		i++;
	}
	printf("%s\n",st);
}
TheWanderer вне форума Ответить с цитированием
Старый 21.11.2008, 09:26   #7
Ламер_001
Ну и что? :)
Форумчанин
 
Регистрация: 20.10.2008
Сообщений: 129
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>

int main()
{
 char *st = "";
 printf("Bedute stroky:\n");
 gets(st);
 int n, i;
 n = strlen(st);
 for(i = 0; i < n; i++)
 {
  if ( (st[i] >= 'a') && (st[i] <= 'z') )
   st[i] -= 32;
 }
 printf("%s\n", st);
 getch();
 return 0;
}
Учиться, учиться и еще раз учиться
Ламер_001 вне форума Ответить с цитированием
Старый 21.11.2008, 10:22   #8
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию

После ввода какой либо буквы или слова появляется сообщение о прекращение работы программы..
TheWanderer вне форума Ответить с цитированием
Старый 21.11.2008, 11:06   #9
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Код:
 char *st=new char[100];
вот так сделай и будет тебе счастье!!!
Или даже можешь вот так!!!
Код:
char *st=new char;          <------ так лучше не писать!!!!
в конце не забудь
Код:
delete [] st;

Последний раз редактировалось StarWorm; 21.11.2008 в 11:11.
StarWorm вне форума Ответить с цитированием
Старый 21.11.2008, 13:26   #10
TheWanderer
Пользователь Подтвердите свой е-майл
 
Регистрация: 01.10.2008
Сообщений: 82
По умолчанию

Проблема теперь в следующем:
Как видно из задания необходимо чтобы программа преобразовала строчные буквы русского алфавита в прописные. То есть вели слово ‘привет’ и в ответ получили бы ‘ПРИВЕТ’. Но программа, почему то не хочет работать с русскими буквами, то есть вели слово ‘привет’ и в ответ получаем ‘привет’. Почему программа не работает?
TheWanderer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема eldar Работа с сетью в Delphi 12 05.10.2008 18:10
проблема bill Свободное общение 7 08.07.2007 21:05
Проблема Vanek B Общие вопросы Delphi 4 17.12.2006 13:30