Получить один символ из символа * в C - PullRequest
6 голосов
/ 12 августа 2011

Есть ли способ пройти символ за символом или извлечь один символ из символа * в C?

Рассмотрим следующий код.Теперь, какой лучший способ получить отдельных персонажей?Предложите мне метод без использования строковых функций.

char *a = "STRING";

Ответы [ 5 ]

20 голосов
/ 12 августа 2011

Другой способ:

char * i;

for (i=a; *i; i++) {
   // i points successively to a[0], a[1], ... until a '\0' is observed.
}
5 голосов
/ 12 августа 2011

Зная длину массива char, вы можете циклически проходить по нему с помощью цикла for.

for (int i = 0; i < myStringLen; i++)
{
     if (a[i] == someChar)
        //do something
}

Помните, что char * можно использовать как строку в стиле C.А строка - это просто массив символов, так что вы можете просто проиндексировать ее.

РЕДАКТИРОВАТЬ: поскольку меня спросили о комментариях, см. Раздел 5.3.2 этой ссылки для получения подробной информации о массивах и указателях: http://publications.gbdirect.co.uk/c_book/chapter5/pointers.html

4 голосов
/ 12 августа 2011
size_t i;
for (i=0; a[i]; i++) {
    /* do something with a[i] */
}
3 голосов
/ 12 августа 2011

Вот так.

char       a1[] = "STRING";
const char * a2 = "STRING";

char * c;     /* or "const char" for a2 */

for (c = aN; *c; ++c)
{
  /* *c is the character */
}

Здесь N может быть 1 или 2. Для a1 вы можете изменить символы, для a2 вы не можете. Обратите внимание, что присвоение строкового литерала char* не рекомендуется.

2 голосов
/ 12 августа 2011
int i=0;
while(a[i]!=0)/* or a[i]!='\0' */
{
   // do something to a[i]
   ++i;
}

РЕДАКТИРОВАТЬ:

Вы также можете использовать strlen(a), чтобы получить количество символов в a.

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