C语言实现按照序号查找分隔符出现的值
时间: 2024-12-16 15:29:29 浏览: 21
在C语言中,如果你有一个字符串数组,想要根据每个元素前的序号查找对应的值,并且是以特定分隔符如逗号`','`、换行符`\n`等分割的,可以先创建一个索引表,然后遍历字符串逐个提取。这里提供一种简单的思路:
假设你有一个字符串`input_string`,里面包含一系列逗号分隔的有序数值,你可以这么做:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 假设输入字符串是这样的:"1,2,3,4,5"
#define INPUT_STRING "1,2,3,4,5"
// 定义一个结构体存储数据和对应的序号
typedef struct {
int value;
int index;
} Data;
// 分割字符串并填充Data结构体到数组
Data* parse_string(char* input_string) {
char* token = strtok(input_string, ",");
Data* data = malloc(sizeof(Data));
data->value = atoi(token); // 转换为整数
data->index = 1; // 初始化序号为1
Data* arr = data;
while (token != NULL) {
Data* new_data = realloc(arr, sizeof(Data) + sizeof(Data)); // 扩展数组空间
new_data->value = atoi(token);
new_data->index = arr->index + 1;
arr = new_data;
token = strtok(NULL, ",");
}
return arr;
}
int main() {
Data* data = parse_string(INPUT_STRING);
for (int i = 0; data[i].value != -1; i++) { // 遍历直到找到空值(-1)
printf("Value at index %d is %d\n", data[i].index, data[i].value);
}
free(data); // 释放内存
return 0;
}
```
这段代码首先通过`strtok()`函数将字符串按逗号分割,然后创建一个动态数组`Data`来保存每对值和对应序号。在`main()`函数中,我们遍历数组打印出每个值及其索引。
阅读全文