Как получить строку ввода от пользователя в char * в VC ++? - PullRequest
1 голос
/ 28 мая 2011

Я хочу взять строку в качестве пользовательского ввода в моей программе ....

...
char* name;
...
printf("\n\tEnter a string : ");
fflush(stdin);
//gets(name);
//gets_s(name,100);
//fgets(name,100,stdin);
...

Все три способа получения ввода строки приводят к ошибкам. Да, я могу взять массив символов, но мойтребуется, чтобы входная строка могла иметь любую длину .Как я могу выполнить мое требование.

100 в gets_s / fgets просто чтобы увидеть, жалуются ли эти функции или нет.

Я использую VS2010.

РЕДАКТИРОВАТЬ: Я добавил визуальный тег c ++, чтобы показать, что я использую VC ++, но моя программа находится на C.

Спасибо

Ответы [ 2 ]

3 голосов
/ 28 мая 2011

Используйте std::string name; std::cin>>name;.C ++ гораздо лучше обрабатывает строки с использованием std::string, чем с char*.

2 голосов
/ 28 мая 2011

In C, нет способа, если вы хотите обработать "строку ввода, которая может иметь любую длину" .Вы должны выделить достаточно памяти для хранения ввода;то есть вы должны указать максимальное количество вводимых символов, которое ваша программа хочет обработать.

Если вы хотите обработать "строку ввода, которая может иметь любую длину" , вы можете использовать C++ std::string, например:

std::string stringOfAnyLength;
getline(std::cin,stringOfAnyLength); //read user line input (can be of any length)

И ваш пример программы неверен, вы должны выделить достаточно буфера при вызове malloc, прежде чем использовать name для получения ввода пользователя:

char* name;

name=malloc((MAX_LEN+1)*sizeof(Char));
...
printf("\n\tEnter a string : ");
fgets(name,MAX_LEN,stdin);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...