ucantseeme 2019-05-05 19:12 采纳率: 55.6%
浏览 590
已结题

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

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

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

比如"abcdef", "nihao"

我想写成

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

这样当然编译不过

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

上面代码我可以写成

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

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

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

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

  • 写回答

2条回答 默认 最新

  • threenewbee 2019-05-05 20:36
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 gwas 分析-数据质控之过滤稀有突变中出现的问题
  • ¥15 没有注册类 (异常来自 HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
  • ¥15 知识蒸馏实战博客问题
  • ¥15 用PLC设计纸袋糊底机送料系统
  • ¥15 simulink仿真中dtc控制永磁同步电机如何控制开关频率
  • ¥15 用C语言输入方程怎么
  • ¥15 网站显示不安全连接问题
  • ¥15 51单片机显示器问题
  • ¥20 关于#qt#的问题:Qt代码的移植问题
  • ¥50 求图像处理的matlab方案