C语言优化代码从stream中根据\n分割成字符串存储,成数组,再将数组中每个字符串按照逗号存储成cstring二维数组
时间: 2023-07-16 10:14:58 浏览: 87
假设输入的 stream 存储在字符数组中,可以使用以下代码实现分割和存储:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_STR_LEN 100 // 定义最大字符串长度
#define MAX_STR_NUM 100 // 定义最大字符串数量
int main()
{
char stream[] = "hello\nworld\nthis\nis\na\ntest\n"; // 假设输入的 stream 存储在字符数组中
char str[MAX_STR_NUM][MAX_STR_LEN]; // 定义字符串数组
char cstr[MAX_STR_NUM][MAX_STR_LEN][MAX_STR_LEN]; // 定义 C 字符串二维数组
int i = 0, j = 0, k = 0, n = 0;
// 根据 '\n' 分割字符串并存储
for (i = 0; stream[i] != '\0'; i++) {
if (stream[i] == '\n') {
str[n][j] = '\0'; // 以 '\0' 结尾
n++;
j = 0;
} else {
str[n][j] = stream[i];
j++;
}
}
// 将每个字符串按逗号分割并存储到 C 字符串二维数组中
for (i = 0; i < n; i++) {
j = 0;
k = 0;
while (str[i][k] != '\0') {
if (str[i][k] == ',') {
cstr[i][j][n] = '\0'; // 以 '\0' 结尾
j++;
k++;
} else {
cstr[i][j][k] = str[i][k];
k++;
}
}
cstr[i][j][k] = '\0'; // 以 '\0' 结尾
}
// 打印 C 字符串二维数组
for (i = 0; i < n; i++) {
for (j = 0; cstr[i][j][0] != '\0'; j++) {
printf("%s ", cstr[i][j]);
}
printf("\n");
}
return 0;
}
```
注意事项:
1. 定义两个常量 MAX_STR_LEN 和 MAX_STR_NUM,分别表示最大字符串长度和最大字符串数量。可以根据实际情况进行调整。
2. 分割字符串时,需要注意末尾的 '\0'。
3. 存储 C 字符串时,需要注意每个 C 字符串的末尾的 '\0'。
阅读全文