C++数组动态空间开辟,数组的内容为字符串
时间: 2023-05-20 10:04:01 浏览: 109
可以使用动态内存分配函数malloc()来开辟数组的空间,然后使用strcpy()函数将字符串复制到数组中。以下是示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char* str = "Hello, world!";
char* arr = (char*)malloc(strlen(str) + 1);
strcpy(arr, str);
printf("%s\n", arr);
free(arr);
return 0;
}
```
这段代码将字符串"Hello, world!"复制到动态分配的数组中,并打印出来。最后别忘了使用free()函数释放内存。
相关问题
输入一串字符(长度不超过80个字符),要求不开辟其它数组而将该字符串逆序存放,并输出逆序后的字符串内容。(要求用字符指针来实现
可以使用指针来实现字符串的逆序存放,具体步骤如下:
1. 使用 `cin` 或 `fgets` 等函数读入字符串;
2. 使用指针 `p` 指向字符串的首地址;
3. 使用指针 `q` 指向字符串的尾地址;
4. 交换 `p` 和 `q` 指向的字符,直到 `p` >= `q`;
5. 输出逆序后的字符串。
代码如下:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[81];
cout << "请输入字符串:";
cin.getline(str, 81); // 或者使用 fgets(str, 81, stdin);
char *p = str, *q = str + strlen(str) - 1;
while (p < q) {
char tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
cout << "逆序后的字符串为:" << str << endl;
return 0;
}
```
注意,上述代码中使用了 `cin.getline(str, 81)` 来读入字符串,这是为了避免输入含有空格的字符串时出现错误。如果不需要读入含有空格的字符串,可以使用 `cin >> str` 或者 `fgets(str, 81, stdin)`。
阅读全文