Member 13224894 Ответов: 1

C++ return char* проблема


- привет!
у меня возникла проблема с возвратом char* в функцию.
я пытаюсь построить функцию, которая получает строку (с несколькими словами) и номер слова.
эта функция должна возвращать указатель на указанное слово.

например:
char string[]="Hello World";
char* Pstring=string;
int num=2;
char* word;
word=myfunction(Pstring,num);
cout<<word;


и результаты будут
World



теперь кажется, что я не могу вернуть Pstring[i], и я не знаю почему..
мой алгоритм находит индекс нужного слова, но я просто не могу найти способ вернуть его местоположение в качестве указателя.

надеюсь, все было ясно, спасибо !

Что я уже пробовал:

это моя функция
int i=0,flag=0;	
// search for word location;
	for(;num>0;i++){
		if(pstring[i]<=122 && pstring[i]>=65){
			flag=1;
		}
		else if(flag &&( Pstring[i]==' '||Pstring[i]==','|| Pstring[i]=='.')){
			num--;
			flag=0;
		}
	}
	return Pstring[i];

1 Ответов

Рейтинг:
12

OriginalGriff

Pstring-это указатель на символ или строку, если вы предпочитаете.
Pstring[i] это то же самое, что сказать *(Pstring + i) уингбис который один элемент строки: символ.
Поскольку ваша функция должна возвращать указатель на символ, она не работает!
Есть два способа сделать возврат с вашим существующим кодом:

return &(Pstring[i]);
Или
return Pstring + i;

Но я бы бросил i и используйте PString в качестве указателя, который я увеличил вместо этого.

[править]опечатка[/правка]


Richard MacCutchan

уингбис?

OriginalGriff

"whingbis": слово, сгенерированное глупой софт-клавиатурой Win10, когда вы собирались ввести"which is". Часто встречается при использовании планшета Win10 с толстыми пальцами и без тактильной обратной связи...: O