编写程序unsigned int getlen(char *s); 返回字符串s的⻓度。
时间: 2024-03-11 14:48:02 浏览: 25
可以使用循环来遍历字符串,直到遇到字符串结尾符 `\0`,统计遍历过的字符个数即为字符串的长度。具体实现如下:
```c++
#include <iostream>
unsigned int getlen(char *s)
{
unsigned int len = 0;
while (*s != '\0') {
len++;
s++;
}
return len;
}
int main()
{
char str[] = "hello world";
unsigned int len = getlen(str);
std::cout << "The length of string \"" << str << "\" is " << len << std::endl;
return 0;
}
```
输出结果为:
```
The length of string "hello world" is 11
```
上面的程序中,使用了一个 while 循环来遍历字符串 s。循环条件为 *s != '\0',即只要当前字符不是字符串结尾符,就继续遍历。在循环中,每遍历一个字符,就将字符串长度 len 加一。最后返回字符串长度 len 即可。
相关问题
在qt中定义一个unsigned char*的字符串
在 Qt 中,可以使用 `QByteArray` 类来代替 `unsigned char *` 类型的字符串。`QByteArray` 类封装了一个字节数组,并提供了一系列操作字节数组的方法。
如果你需要将一个 `char *` 类型的字符串转换为 `QByteArray`,可以使用 `QByteArray` 的构造函数或 `QByteArray::fromRawData()` 静态方法。例如:
```cpp
const char* str = "Hello, world!";
int len = strlen(str);
QByteArray byteArray(str, len);
```
这里,我们首先定义了一个 `char *` 类型的字符串 `str`,然后使用 `strlen()` 函数计算出字符串的长度,并将它赋值给变量 `len`。接下来,使用 `QByteArray` 的构造函数将 `str` 转换为 `QByteArray` 类型的字节数组 `byteArray`。
如果你已经有了一个 `unsigned char *` 类型的字符串,那么可以使用 `reinterpret_cast` 将它转换为 `char *`,然后再将其转换为 `QByteArray`。例如:
```cpp
unsigned char* str = /*...*/;
int len = /*...*/;
QByteArray byteArray(reinterpret_cast<char*>(str), len);
```
这里,我们首先使用 `reinterpret_cast` 将 `unsigned char *` 类型的字符串 `str` 转换为 `char *`,然后使用 `QByteArray` 的构造函数将其转换为 `QByteArray` 类型的字节数组 `byteArray`。
C++ unsigned char*数组转ascii字符串
可以使用以下代码将一个 `unsigned char` 类型的数组转换为 ASCII 字符串:
```cpp
unsigned char arr[] = { 72, 101, 108, 108, 111, 33 }; // Hello!
int len = sizeof(arr) / sizeof(unsigned char);
char str[len+1];
for (int i = 0; i < len; i++) {
str[i] = static_cast<char>(arr[i]);
}
str[len] = '\0';
std::cout << str << std::endl; // Output: Hello!
```
在上面的代码中,我们首先定义了一个 `unsigned char` 类型的数组 `arr`,其中包含 ASCII 字符串 "Hello!" 的每个字符的 ASCII 编码。然后,我们计算数组的长度并使用 `char` 类型的数组 `str` 来存储 ASCII 字符串。接下来,我们使用循环遍历 `arr` 数组中的每个元素,并将其转换为 `char` 类型并存储到 `str` 数组中。最后,我们在 `str` 数组的末尾添加一个空字符 '\0',以确保它是一个有效的 C 风格字符串,并在控制台上输出它。