我正在尝试在代码中使用单个字符串的大小。这就是我所拥有的
const static char * keypad[] = {
"ex",
"bobbb",
"test",
};
但是当我尝试使用时,例如,
sizeof(keypad[i]);
它不会为每个字符串返回正确的大小。无论如何在C ++中这样做?我受限于
#include <stdio.h>
#include <ctype.h>
出于某种任意原因。
答案 0 :(得分:2)
您可以对数组的每个元素使用strlen函数。如果你不能使用string.h那么你可以编写自己的。只需循环遍历每个字符,直到找到终止&#39; \ 0&#39;。
考虑到你的约束(大概是老师?),你有两个任务。一种是编写自己的strlen函数。二是弄清楚如何循环遍历数组的每个元素。第二个任务归结为计算阵列的长度(假设你不硬编码)。
答案 1 :(得分:2)
keypad
不是字符串的数组。它是一个指针的数组,每个都指向一个C风格字符串的(第一个字符)。
sizeof keypad[i]
为您提供其中一个指针的大小(以字节为单位),可能为4或8个字节。
确定字符串的 length 的方法(定义为终止'\0'
null字符的字符数)是调用{{1功能。如果您不允许使用strlen()
,则您必须自己编写同等功能。
(你可以合法声明 <string.h>
而不包括strlen
,但我认为这会被视为作弊,所以我不会告诉你如何去做。)
(真正在C ++中执行此操作的方法是定义<string.h>
,但显然您不允许这样做。也许是部分要点目前的练习是向您展示不同方法可以更方便。)
答案 2 :(得分:0)
的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;
}