Ошибка на коротком указателе в C - PullRequest
0 голосов
/ 05 августа 2011

Я получаю сообщение об ошибке во время второго цикла while «недопустимая операция с указателем», я думаю, что это из-за len, но мне нужно, чтобы он был указателем, чтобы я мог вернуться к нему. Любые предложения о том, как исправить эту ошибку?

char* getWord(char* string, short* len)
{
 size_t walker = 0;

  /*POINT TO THE FIRST CHAR*/
  while (string[walker] == ' ' || string[walker] == '\0')
   ++walker;


 while ( string[walker + len] != ' ' || string[walker + len] != '\0'  )
   ++len;

 return (string[walker]);

Ответы [ 3 ]

3 голосов
/ 05 августа 2011

Недопустимая операция указателя - это добавление walker и len.

По сути, вы добавляете size_t и short *.Может быть, вам нужно сначала разыменовать len:

string[walker + *len]

Или len изначально не должен был быть указателем?

3 голосов
/ 05 августа 2011

Defer it:

while ( string[walker + *len] != ' ' || string[walker + *len] != '\0'  )
     ++(*len);

, но сначала убедитесь, что он инициализирован ...

Кроме того, вам нужно вернуть указатель на слово, а не символ по этому адресу,так напишите:

return (&string[walker]);

вместо

return (string[walker]);
0 голосов
/ 05 августа 2011

Должен ли len быть указателем?Если да, то измените string[walker + len] на string[walker + *len].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...