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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2010, 20:22   #1
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию Считывание строки из консоли СИ с использованием getchar()

Доброго времени суток, товарищи))

Не подскажет ли кто -
1) можно ли вот таким способом считывать строку из консоли ,преобразовывая её в матрицу -
Код:
 printf("\nPlease specify the dimension of the matrix. \n");
  n = getchar();
  printf("Specify values of elements of the matrix (figures)separated by spaces. \n");
  m = (int**)calloc(n,sizeof(int*));
  for(i=0;i<=n-1;i++)
  {*(m+i) = (int*)calloc(n,sizeof(int));}
  putchar('\n');
  putchar(i);
  putchar('\n');
  
  i = 0;
  j = 0;
  while (j<(n*n))
  { 
    u = getchar();  
    if ((u != ' ')&&(u != '\n'))
	{
	  i = i+1;
	  j = j+1;
	  putchar('\n');
       putchar(i); putchar(' '); putchar(n);
	  *(*(m+i)+k)=u;
	  if (i==n) {i=0; k++;}
	}
  }
2) почему-то в выделенной строке вместо "i" в консоль выводятся карточные масти (надеюсь, это не глюки...)

Прикреплю файл ))
Заранее благодарю за ответы))
Вложения
Тип файла: zip 11111.zip (602 байт, 8 просмотров)
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 15.12.2010, 20:33   #2
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

почему-то при условии -
Код:
 while (j<(n*n))
происходит зацикливание даже при указании длинной строки символов программа предлагает указать ещё.......
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Старый 15.12.2010, 20:40   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
printf("\nPlease specify the dimension of the matrix. \n");
n = getchar();
Уже здесь тебе выдается ерунда. Ты же вводишь символ допустим "2", а он преобразуется в код - 50, это что получается твоя прога 50 ячеек зарезервирует вместо запрошенных мой двух?
Не, я бы на такой изврат не рассчитывал...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.12.2010, 15:52   #4
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

тогда значит надо получить число 2....а не 50.....и ошибка при этом не выдаётся ...воля-вольная)
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось vedro-compota; 16.12.2010 в 15:55.
vedro-compota вне форума Ответить с цитированием
Старый 16.12.2010, 15:58   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Нужно просто не пользоваться ситом для транспортировки жидкости
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 16.12.2010, 16:07   #6
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

преобразовать char в integer....)

почему-то так -
Код:
 n = (int)getchar();
тоже не работает..

можно ли как-то получить целочисленное значения без использования scanf() ?
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось Stilet; 17.12.2010 в 12:12.
vedro-compota вне форума Ответить с цитированием
Старый 16.12.2010, 22:03   #7
oleg.v
Пользователь
 
Регистрация: 24.11.2010
Сообщений: 80
По умолчанию

Цитата:
Сообщение от vedro-compota Посмотреть сообщение
можно ли как-то получить целочисленное значения без использования scanf() ?
Функция atoi возвращает целое число из строки.

int atoi(char s[]);
oleg.v вне форума Ответить с цитированием
Старый 16.12.2010, 22:24   #8
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

спасибо, oleg.v ))
только....м-да...
--------------
ещё так можно -
Цитата:
scanf("%d",&n);
.....получается , что функция scanf в таком вот виде -
Код:
 scanf("%d\n",&n);
делает программу абсолютно нечувствительной к нажатию клавиши enter до тех пока не указывается какой либо иной символ....а ведь по-идее она должна просто игнорировать его пи считывании строки...то есть один раз..
против абортов=за + жизнь;.фкн вгу;_______________________мойблг

Последний раз редактировалось Stilet; 17.12.2010 в 12:14.
vedro-compota вне форума Ответить с цитированием
Старый 17.12.2010, 00:22   #9
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

c=int(getch())-48 :D
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 17.12.2010, 11:59   #10
vedro-compota
любитель-далеко не
Участник клуба
 
Аватар для vedro-compota
 
Регистрация: 13.04.2010
Сообщений: 1,156
По умолчанию

Цитата:
c=int(getch())-48 :D
да, спасибо)) мне недавно помогли подобным образом -
Код:
c=getchar()-'0';
против абортов=за + жизнь;.фкн вгу;_______________________мойблг
vedro-compota вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввод строки из консоли matrasa Общие вопросы C/C++ 4 06.12.2010 12:21
Посимвольное считывание из файла. Проблема кодировки. Кириллица в консоли. SrgGld Общие вопросы C/C++ 0 16.11.2010 20:34
getchar prototype321 Помощь студентам 0 28.04.2010 15:06
Считывание строки неограниченной длины (Си) 0kopok Помощь студентам 6 05.10.2009 20:46
Считывание строки из файла до символа Stormzcooler Общие вопросы Delphi 7 18.12.2006 15:01