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

    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?