首页 > 解决方案 > 如何使用双指针查找 2D 数组中列的长度?

问题描述

您好,对于我的程序,我需要找到使用双字符指针存储的单词的长度以制作一种二维数组。每当我尝试使用strlensizeof(arr)/sizeof(arr[0])它返回大量数字而不是每列存储的字符数量(字符串的大小)时。我认为这可能与空指针有关,但我不确定如果是这种情况,我将如何解决这个问题。

这是我用来尝试确定字符串大小的两行代码。第一个也迫使我重新启动终端,因为 ctrl+c 甚至不会停止它。当我打印它时,第二个只是返回一个非常非常大的数字。

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

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

标签: cpointersmultidimensional-array

解决方案


这里有一个样本:

#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));

您试图从字符串数组中获取值,而只是从字符串中获取地址而不是其值。


推荐阅读