ucantseeme
ucantseeme
采纳率55.6%
2019-05-05 19:12 阅读 544

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

10

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

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

比如"abcdef", "nihao"

我想写成

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

这样当然编译不过

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

上面代码我可以写成

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

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • caozhy 从今以后生命中的每一秒都属于我爱的人 2019-05-05 20:36

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

    点赞 评论 复制链接分享
  • weixin_42884649 CR711 2019-05-06 23:58

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

    点赞 评论 复制链接分享

相关推荐