关于strlen和length的使用

 两者都是求字符串的长度,但strlen( )的参数必须是char* ;而 str.length( )是string类对象。

问题:编写一个函数,其功能室:从传入的 num个字符中找出最长的一个字符串,并 通过形参指针max传回该串地址。

错误代码及其修改:

char *fun(char (*a)[81], int num, char *max)
{
    int i;
    max=a[0];
    for(i=0;i!='\0';i++){     //错误----------正确:for(i=0;i<num;i++)//从最长的字符串中筛选,没有结束符
        if(a[i].length>max.lengh)   //错误-------正确:if(strlen(max)<strlen(a[i]))
  {
      max=a[i];
  }
    }
      return max;
}

希望打好基础考试能考出好成绩

### C/C++ 中 `strlen` `sizeof` 的区别 在 C/C++ 编程语言中,`strlen` 函数用于计算字符串的实际长度(不包括终止符 `\0`),而 `sizeof` 运算符则返回变量或数据类型的字节数。 对于字符数组而言: - 使用 `strlen` 可以获取实际存储的有效字符数。例如,在处理动态输入或者不确定大小的字符串时非常有用[^1]。 ```cpp char str[] = "example"; size_t len_str = strlen(str); // 返回7, 不计'\0' ``` - 而 `sizeof` 则会给出整个数组所占内存空间的总大小,这包含了可能存在的多余未初始化部分以及结尾处的空字符 `\0`[^2]。 ```cpp char str[] = "example"; size_t size_arr = sizeof(str); // 返回8, 包括'\0'在内的全部字符数量 ``` 当涉及到其他类型的数据结构如自定义结构体时,情况有所不同。比如下面的例子展示了如何定义并操作一个简单的行星信息结构体: ```cpp struct planet { char name[20]; double population; double g; }; planet earth = {"Earth", 7e9, 9.8}; size_t size_planet = sizeof(earth); // 计算该实例占用的空间总量 ``` 需要注意的是,如果尝试对指针应用 `sizeof`,那么得到的结果将是该平台下指针本身的尺寸而非其所指向对象的真实规模;而对于通过指针访问的内容,则应采用适当的方法来确定其有效范围,例如利用 `strlen` 对于字符串的情况。 关于 `length()` 方法 `size()` 方法的应用场景主要取决于具体容器类的设计。通常来说: - 字符串类 (`std::string`) 提供了成员函数 `length()` 或者 `size()` 来查询内部保存序列的逻辑长度; - 容器类(如向量 `vector<T>`)一般提供 `size()` 成员函数表示当前元素数目,并且还有 `capacity()` 表明分配了多少额外容量以备将来增长之需。 综上所述,理解这些概念有助于编写更加高效且不易出错的程序代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ULock

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值