Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 15.03.2010, 17:15   #1
dma
Пользователь
 
Регистрация: 09.10.2007
Сообщений: 22
По умолчанию [Си] Строки

Помогите разобраться:
вводим строку и нужно, чтобы ее тут же вывести на экран
Код:
int main()
{
    char str[255];
    printf ("vvedite stroku =");
    scanf ("%s",&str);
    printf ("vot ona:%s",str);
   }
но почему то выводится только первое слово до пробела, в чем фишка никак понять не могу
dma вне форума Ответить с цитированием
Старый 15.03.2010, 17:38   #2
pproger
C++ hater
СуперМодератор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,335
По умолчанию

потому что scanf при чтении строк читает до первого пробела. лучше используй fgets.
pproger вне форума Ответить с цитированием
Старый 15.03.2010, 19:44   #3
dma
Пользователь
 
Регистрация: 09.10.2007
Сообщений: 22
По умолчанию

с fgets не разобрался, зато с помощью gets все получилось, но есть еще вопросы(надо прогу сделать, а так как тут надо свой код выкладывать,чтоб помогли, то буду потихоньку вас доставать).
есть код:
Код:
int main()
{
    char st[255];
    printf("vvedite:");
    gets (st);
    if (strchr(st, '1' ) || strchr(st, '2') || strchr(st, '3')||strchr(st,'4')||strchr(st,'5')||strchr(st,'6')||strchr(st,'7')||strchr(st,'8')||strchr(st,'9')||strchr(st,'0'))
    {
                  printf(" 1,2,3,4,5,6,7,8,9,0 is in\n");
                  }
                  else
                  {
                      
                  printf("no");
                  }
тут программа смотрит присутствует ли цифра в строке, с этим проблем нет, но хочу узнать можно ли
Код:
 if (strchr(st, '1' ) || strchr(st, '2') || strchr(st, '3')||strchr(st,'4')||strchr(st,'5')||strchr(st,'6')||strchr(st,'7')||strchr(st,'8')||strchr(st,'9')||strchr(st,'0'))
записать как то более компактно.
И еще, вообще надо сделать программу которая будет выдавать все слова из строчки содержащие цифры, отсюда вопрос, в правильном направлении я двигаюсь?
dma вне форума Ответить с цитированием
Старый 15.03.2010, 19:52   #4
pproger
C++ hater
СуперМодератор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,335
По умолчанию

Цитата:
с fgets не разобрался
Код:
#include <stdio.h>

#define LEN 128

int main()
{
	char str[LEN];
	fgets(str, LEN, stdin);
	printf("%s\n", str);
	return 0;
}
не юзай gets.

2. пройтись в цикле и проверить на isdigit, к примеру
pproger вне форума Ответить с цитированием
Старый 15.03.2010, 20:02   #5
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Цитата:
ут программа смотрит присутствует ли цифра в строке, с этим проблем нет, но хочу узнать можно ли
Код:

if (strchr(st, '1' ) || strchr(st, '2') || strchr(st, '3')||strchr(st,'4')||strchr(st,'5' )||strchr(st,'6')||strchr(st,'7')|| strchr(st,'8')||strchr(st,'9')||str chr(st,'0'))
записать как то более компактно.
вот так
Код:
char isDigit=0;
for(i=0; i<strlen(str); i++){
     if(str[i] >= '0' && str[i] <= '9'){
           isDigit = 1;
           break;
     }
}
NiCola999 вне форума Ответить с цитированием
Старый 15.03.2010, 20:03   #6
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Есть стандартная функция на проверки элемента строки на элемент цифры isdigit() или на символ isalpha
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 15.03.2010, 20:53   #7
dma
Пользователь
 
Регистрация: 09.10.2007
Сообщений: 22
По умолчанию

Вообщем вот, что вышло, но программа выводит на экран только цифры встречающиеся в строке, а мне надо, чтобы на экран выводилось все слово целиком которое содержит цифру
Код:
#include <ctype.h>
#include <stdio.h>
int main()
{
   char str;
   for(;;)
   {
      str = getc(stdin);
      if (str == '.') break;
      if (isdigit(str) && isgraph(str)) printf ("%c has a digit\n", str);
   }
return 0;
}
где я делаю не так ?

может хоть кто на мысль наведет? плииз

Последний раз редактировалось Stilet; 17.03.2010 в 17:31.
dma вне форума Ответить с цитированием
Старый 17.03.2010, 16:45   #8
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Введите какой-нибудь массив символов, в который будете считывать посимвольно слова. Как только встречаете пробел - слово закончилось. Попутно проверяете каждый символ. Если среди них есть цифра, то по окончании считывания очередного слова выводите это слово. И далее по новой для нового слова.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление элементов строки s2 из строки s1 Ueshua Общие вопросы C/C++ 4 20.12.2009 14:06
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
Строки. Как вывести часть строки? Anfall Общие вопросы Delphi 7 26.02.2009 10:10
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45