C如何打印字符串数组中字符串的大小

Posted

技术标签:

【中文标题】C如何打印字符串数组中字符串的大小【英文标题】:C How do I print the size of a string in array of strings 【发布时间】:2020-08-09 15:27:00 【问题描述】:

我有以下代码:

int main() 
    char** a = "bob", "alex", "john";
    for (int i = 0; i < 3; i++) 
        printf('%d', sizeof(a[i]));
    

我在这里尝试做的是初始化一个字符串数组,遍历它并打印每个单词的大小。但我得到分段错误。我的方法有什么问题?

【问题讨论】:

我建议您在***.com/questions/33746434/…查看接受的答案 这能回答你的问题吗? Double pointer vs array of pointers(**array vs *array[]) 【参考方案1】:

这是一个工作代码:

#include <stdio.h>
int main() 
    char* a[3] = "bob", "alex", "john";
    for (int i = 0; i < 3; i++) 
        printf("%d\n", strlen(a[i]));
    

请注意,区别在于char* a[3] 而不是char**"%d" 而不是'%d'strlen 而不是sizeof

【讨论】:

Nit-pick: strlen() 返回一个 size_t 类型的值。 size_t 的正确格式说明符是 %zu

以上是关于C如何打印字符串数组中字符串的大小的主要内容,如果未能解决你的问题,请参考以下文章

c程序打印未知大小的字符串数组的元素

c语言字符数组如何比较?

C程中如何计算数组(一维及二维)占内存空间的大小

数组大小和字符串拆分

如何让字符串数组的Contains忽略大小写

在C中打印反转的字符串/数组