c 字符串转数组
c 字符串转数组
概述
一种实现思路
1.识别字符串中的分隔符
2.根据分隔符将字符串中各整数提取出来
3.在提取过程中将整数逐个存入数组
实现
代码如下:
点击查看代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define _IN_OUT_
#define _IN_
#define _OUT_
static int StrToArr(_IN_OUT_ int* arr, _IN_ char* str)
{
if (str == NULL || arr == NULL)
return 0;
char Separator = '0';
int strindex = 0;
int arrindex = 0;
int len = strlen(str);
for (int i = 0; str[i] != '\0'; i++)
{
if (str[i] > '9' || str[i] < '0' && str[i] != '-')
{
Separator = str[i];//提取分隔符
break;
}
}
while (1)
{
while (str[strindex] != Separator)
{
int num = (int)str[strindex] - 48;//提取整数
arr[arrindex] *= 10;
arr[arrindex] += num;
strindex++;
if (strindex == len)
{
return arrindex + 1;//返回数组长度
}
}
strindex++;
arrindex++;
}
}
int main()
{
char* str = "78 95 888 1 99999";
int len = strlen(str);
/*
* 为数组申请字符串长度的内存
* 防止数组长度不够导致的溢出
*/
int* arr = malloc(sizeof(int) * len);
memset(arr, 0, sizeof(int) * len);//将数组中元素全部初始化为0
int arrlen = StrToArr(arr, str);
printf("长度:%d\n", arrlen);
for (int i = 0; i < arrlen; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
free(arr);
return 0;
}
长度:5
78 95 888 1 9999
stdio.h中ssanf()函数可实现相似功能:
点击查看代码
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int arr[10] = { 0 };
char* str = "78 95 888 1 99999";
sscanf(str, "%d %d %d %d %d", &arr[0], &arr[1], &arr[2], &arr[3], &arr[4]);
for (int i = 0; i < 5; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
78 95 888 1 9999

浙公网安备 33010602011771号