Как вы находите длину столбцов в двумерном массиве, используя двойные указатели? - PullRequest
0 голосов
/ 06 ноября 2019

Здравствуйте, для моей программы мне нужно найти длину слов, сохраненных с использованием двойных символьных указателей, чтобы создать своего рода двумерный массив. Всякий раз, когда я пытаюсь использовать strlen или sizeof(arr)/sizeof(arr[0]), он возвращает огромное число вместо количества символов, которое хранится в каждом столбце (размер строк). Я думаю, что это может иметь какое-то отношение к нулевым указателям, но я не уверен, как бы я это исправил, если бы это было так.

Это две строки кода, которые я использую, чтобы попытаться определить размеры строк. Первый также вынуждает меня перезапустить мой терминал, поскольку ctrl + c даже не остановит его. Второй просто возвращает очень очень большое число, когда я его печатаю.

int wordlength = sizeof(*(list+listPos))/sizeof(*(*(list+listPos)));

int wordlength = strlen(*(list+listPos));

1 Ответ

0 голосов
/ 06 ноября 2019

Вот вам пример:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void) {
  char **arr;
  arr=malloc(2*sizeof(char*));
  *arr=malloc(20*sizeof(char));
  strcpy(*arr,"Hello World");
  int len=strlen((*arr+0));
  printf("%s %d",*arr,len); //output Hello World 11
  return 0;
}

Когда вы написали это так:

strlen(*(list+listPos));

Вы пытались получить доступ к значению из массива строк и просто указать адрес из строки, а не еезначение.

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