Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Проблемма с вводом переменной типа char (С++)


Автор: Alex103 3.6.2009, 12:55
Добрый день уважаемые программисты. Подскажите пожалуйста почему программа выдает ошибку.

Вот код:
Код

#include <math.h>
#include <string.h>
#include <iostream.h>
#define l 2

int main () {
int b,i=0,j,temp=0,n=0;
char* mas_words[100];
char* buf="";
int mas_num[100];
int mas_words_repeat[100]={0};
char str[100] ="My name is vova";
cout << "Enter the string:";
/*cin >> str;*/
  char * pch;
  cout << "Start string: \n\n" << str <<"\n\n";
  pch = strtok (str," ,.-()");
  while (pch != NULL)
  {
    mas_words[i]=pch;
    mas_num[i]=strlen(pch);
    pch = strtok (NULL, " ,.-()");
    i++;
    n++;
  }
  for(j=0;j<n;j++){
    for(i=0;i<n;i++){
     if(mas_num[i+1]>mas_num[i]){
        temp=mas_num[i];
        mas_num[i]=mas_num[i+1];
        mas_num[i+1]=temp;
        buf=mas_words[i];
        mas_words[i]=mas_words[i+1];
        mas_words[i+1]=buf;
     }
    }
   }
  for(i=1;i<n;i++){
        for(j=1;j<n;j++){
                if(strcmp(mas_words[i],mas_words[j])==0){
                        mas_words_repeat[i]+=1;
                }
        }
  }
  for(i=1;i<n;i++){
        for(j=1;j<n;j++){
                  if(strcmp(mas_words[i],mas_words[j])==0 && i!=j){
                        mas_words[i]="0";
                }
        }
  }
  cout << "Words:        Counts:     Repeats:\n";
  for(i=1;i<=l;i++){
  if(strcmp(mas_words[i],"0")!=0){
     cout << mas_words[i] << "       ";
     cout << mas_num[i] << "             ";
     cout << mas_words_repeat[i] << "";
     cout << "\n";
     }
  }
  scanf("%d",&b);
}

Если так то все работает, но если заменить:
Код

char str[100] ="";
cout << "Enter the string:";
cin >> str;

выдает ошибки.

Задача состоит в том чтобы переменную str не описывать а вводить с клавиатуры.

Автор: mrbrooks 3.6.2009, 13:07
strcpy()
 
а вообще юзай камрад std::string  smile 

Автор: Alex103 3.6.2009, 13:12
Т.е. ввести дополнительную переменную такого же типа как str, считать ее и скопировать в str??


Автор: mrbrooks 3.6.2009, 13:18
Цитата(Alex103 @  3.6.2009,  13:12 Найти цитируемый пост)
Т.е. ввести дополнительную переменную такого же типа как str, считать ее и скопировать в str??

ну типа того.

можно и так:
Код

char str[100];
std::cin.getline(str,99);
std::cout << str << std::endl;

Автор: azesmcar 3.6.2009, 13:31
Alex103

Где выдает ошибку? Какую ошибку?

Цитата(Alex103 @  3.6.2009,  12:55 Найти цитируемый пост)
Задача состоит в том чтобы переменную str не описывать а вводить с клавиатуры.

Код

std::string str;
getline(std::cin, str);


Добавлено через 1 минуту и 19 секунд
код из моих ночных кошмаров smile 
ну зачем мешать потоки и scanf? если пишешь на С++ - пиши на нем.

Автор: Alex103 3.6.2009, 13:35
А можно записать в похожем на мой синтаксис что-то типа в стиле компилятора Borland C++ 3.11, или для старых версий такой ситаксис пойдет??

Автор: azesmcar 3.6.2009, 13:36
Цитата(Alex103 @  3.6.2009,  13:35 Найти цитируемый пост)
А можно записать в похожем на мой синтаксис что-то типа в стиле компилятора Borland C++ 3.11, или для старых версий такой ситаксис пойдет??

 smile я его в последний раз 10 лет назад видел. Это на С++, учитывая что Borland C++ имеет к С++ косвенное отношение - может и не сработать. Так попробуй
Код

string str;
getline(cin, str);

и
#include <iostream.h>

Автор: Alex103 3.6.2009, 13:41
Не хочет работать.

Автор: azesmcar 3.6.2009, 13:43
Цитата(Alex103 @  3.6.2009,  13:41 Найти цитируемый пост)
Не хочет работать. 

не очень то информативно.

Автор: math64 3.6.2009, 13:56
В BC3.1 класса string нет, есть в BC4.5:
Код

char str[80];
cin.getline(str,79);

Автор: mrbrooks 3.6.2009, 13:58
Интересно - но замечено - участники повторяют друг друга по несколько раз в одном посте. Это типа фича Винграда?  smile 

Автор: Alex103 3.6.2009, 14:15
Спасибо всем, заработал вариант:
Код

char str[80];
cin.getline(str,79);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)