【问题标题】:Passing a pointer to char array, and getting that arrays length in C?传递一个指向 char 数组的指针,并在 C 中获取该数组的长度?
【发布时间】:2021-01-16 07:28:24
【问题描述】:

如何获取数组“源”的长度?到目前为止我有这个 我想知道是否有人有任何建议。谢谢

对于尺寸,我得到 -2074。

我不知道数组的长度,它是一个随机输入。

#include <ctype.h>

int StrToUpper(char *destination[],  const char *source[])
{
    int size = *(&source + 1) - source;

    return size;
}

【问题讨论】:

  • 如果你只有一个指针,你就不能得到一个“数组”的大小。该程序只是没有关于指针可能指向的任何信息。
  • 这是 OP 的副本(现已删除)same question,几个小时前已作为副本关闭。
  • 是的,对不起,我的其他人已经回答了,我试图发布它,但它不让我。
  • 请注意char *source[] 并没有将source 声明为指向数组的指针,它是一个指针数组(或者实际上是指向指针或char **source 的指针)。如果你想要一个指向数组的指针,你需要使用char (*source)[]。在这种情况下,这没有任何区别。
  • 你真的需要数组的 size 吗?还是字符串长度?用例是什么?您需要解决的实际潜在问题是什么?

标签: arrays c function pointers


【解决方案1】:

你可以这样做:

int StrToUpper(char *destination[],  const char *source)
{
    int size = 0;
   
    while(source[size] != '\0')
        size++;

    return size;
}

我假设你会将字符串传递给这个函数 喜欢:StrToUpper("some","somemore")

【讨论】:

    猜你喜欢
    • 2021-01-26
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多