Подсчет # индекса неопределенного массива символов в C - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь подсчитать количество индексов неопределенного массива char, который используется в качестве параметра в функции.

Я уже знаю, что если мой массив был исправлен, я могу использовать "sizeof", что здесь не так.

Попытка:

int counting(char *name3) {
  int count = 0;
  int i;

  //I have no idea what to put as my condition nor do I believe 
  //I am approaching this situation correctly...
  for (i = 0; i < sizeof(name3); i++) {
      if (name3[i] != '\0') {
        count++;
      }
  }
return count;
}

Тогда, если она запускается с помощью следующего кода

int main(void) {
char *name = "Lovely";
int x = counting(name);
printf ("The value of x = %d", x);

Печать: Значение x= 0

Любая помощь или указатели были бы удивительными.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019
#include <stdio.h>

int main()
{

    int i=0;
    char *name = "pritesh";
    for(i=0;;i++)
    {  
        if(name[i] == '\0')
        {
            break;
        }
    }
    printf("%d", i);

    return 0;
}

Это должно сработать

примечание: это может быть синтаксически некорректно, так как у меня не было рук с c в течение длительного времени

0 голосов
/ 04 февраля 2019

В C каждая строка заканчивается на '\ 0' (нулевой символ)
Вы можете выполнять итерацию до тех пор, пока не встретите нулевой символ

Пример кода будет выглядеть следующим образом

char* name = "Some Name";
int len = 0;
while (name[len] != '\0') {
    len++;
}

Кроме того, если это указатель на символ, а не массив символов, sizeof(char*) всегда будет возвращать 4 в 32-разрядном приложении и возвращать 8 в 64-разрядном приложении (размер самого «указателя» - размер адреса памяти)

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