C语法问题,二维字符串数组,无下标 10C

注意要求是c/c++通用的,不是那些c++单独有的

我有个字符串数组,常量,但内容不确定随时会变

比如"abcdef", "nihao"

我想写成

char mystr[][] = {
"abcdef",
"nihao"
};

这样当然编译不过

但为什么要这样写呢,我希望用sizeof取字符串长度,而不是动态获取

上面代码我可以写成

char mystr0[] = "abcdef";
char mystr1[] = "nihao";
char* strs[] = { mystr0, mystr1 };

总之就是换了好几次行,有没有什么优雅的写法,假设我的字符串量会很大

就是说我用几句代码,循环去处理,可以轮询这些指针及他们的静态长度

而对外部而言,就是个字符串做参这样子的情况

2个回答

你的想法根本错误
sizeof在主程序里,取得的是字符串数组的长度,而不是里面字符串的长度。
比如
char ch[100];
scanf("%s", &ch[0]); //输入123
int n = sizeof(ch); //得到的是100而不是3
在函数内,取得的是sizeof(char)的长度,也就是1
要得到字符串的长度,需要用strlen

ucantseeme
ucantseeme 抬杠嫌疑,我都说了常量字符串了,自适应数组长度=常量字符串+1,这个大家都知道了,也不涉及系统编译器相关问题
大约一年之前 回复

如果只是想要实现循环得字符串长度
循环得到长度这样也可以吧
char *m[]={"hello","hi","yes"};
for(int i=0;i<sizeof(m)/4;i++){
printf("%s length: %d\n",m[i],strlen(m[i]));
};

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问