【问题标题】:Understanding parameters of strlen in C了解 C 中 strlen 的参数
【发布时间】:2023-02-02 19:50:26
【问题描述】:

我对为什么我的代码没有在 C 编程中迭代字符串感到有点困惑。

本质上。

我这里有这个功能

int atoi(const char *s[]){
    printf(" The length is  %d",strlen(s));

    int length = strlen(s);

    for(int i = 0; i< length; ++i){
        printf("This is %s",*(s+i));
    }
    return 0;
}

我的第一个问题

  1. 在执行strlen(s)时,为什么它有效,但在执行strlen(*s)时却不起作用,难道strlen不应该接受值而不是指针,所以后者应该有效吗?

  2. 我将如何遍历指向内存中字符串的指针?

    干杯

【问题讨论】:

标签: c string pointers strlen


【解决方案1】:
  1. 不要使用标准函数名
  2. strlen 获取指向char 的指针并返回size_t(不是整数)
  3. 您的打印格式错误。
  4. 你的函数接受一个指针数组而不是指向char的指针
    int myfunc(const char *s)
    {
        size_t length = strlen(s);
    
        printf(" The length is  %zu", length);
        for(size_t i = 0; i< length; ++i){
            printf("This is '%c'
    ",*(s+i));
        }
        return 0;
    }
    

【讨论】:

    【解决方案2】:

    问题:

    当做 strlen(s) 为什么它有效,但是当做 strlen(*s) 它 不起作用?

    回答:

    因为 strlen() 需要 const char *,而不是 char。从手册页:

    strlen()函数计算指向的字符串长度 到 s,不包括终止空字节 ('

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    相关资源
    最近更新 更多