字符串数组中字符串的长度

Length of string in array of string

本文关键字:字符串 数组      更新时间:2023-10-16

我正在尝试在代码中使用单个字符串的大小。这是我的

const static char * keypad[] = {
    "ex",
    "bobbb",
    "test",
};

但当我尝试使用时

sizeof(keypad[i]); 

它不会为每个字符串返回正确的大小。在C++中有这样的方法吗?我仅限于

#include <stdio.h> 
#include <ctype.h> 

出于某种武断的原因。

keypad不是字符串的数组。它是指针的数组,每个指针都指向C风格字符串(的第一个字符)。

sizeof keypad[i]提供了其中一个指针的字节大小,可能是4或8个字节。

确定字符串的长度(定义为不包括终止''空字符的字符数)的方法是调用strlen()函数。如果不允许使用<string.h>,则必须自己编写一个等效的函数。

(您可以合法地声明strlen而不包括<string.h>,但我认为这将被视为作弊,所以我不会向您展示如何做到这一点。)

(在C++中,真正的方法是定义std::vector<std::string>,但显然不允许这样做。也许当前练习的部分目的是向您展示不同的方法有多方便。)

您可以对数组的每个元素使用strlen函数。如果你不能使用string.h,那么你可以自己写。只需在每个字符上循环,直到找到终止的"\0"。

考虑到你的限制(可能是老师的限制?)你有两项任务。一种是编写自己的strlen函数。第二个是找出如何在数组的每个元素上循环。第二个任务归结为配置数组的长度(假设您没有对其进行硬编码)。

sizeof(键盘[i]);

是一个存储地址的数组。这些地址
地址[0]

地址[1]

地址[2]

指向字符串,因为它们是大小可能为4字节或可能因处理器而异的指针。

为了得到完整尺寸的

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
const static char * keypad[] = {
    "ex",
    "bobbb",
    "test",
};
int i,size=0;
for(i=0;i<sizeof(keypad)/sizeof(char*);i++)
{
    size=size+strlen(keypad[i]);
}
cout<<size;
}