数字字符串转数值数组
C 库函数 - strtok()
描述
C 库函数
char *strtok(char *str, const char *delim)
分解字符串 str 为一组字符串,delim 为分隔符。
声明
下面是 strtok() 函数的声明。
char *strtok(char *str, const char *delim)
参数
str – 要被分解成一组小字符串的字符串。
delim – 包含分隔符的 C 字符串。
返回值
该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。
实例
下面的实例演示了 strtok() 函数的用法。
实例
#include <string.h>
#include <stdio.h>
int main () {
char str[80] = "12-13-14";
const char s[2] = "-";
char *token;
/* 获取第一个子字符串 */
token = strtok(str, s);
/* 继续获取其他的子字符串 */
while( token != NULL ) {
printf( "%s\n", token );
token = strtok(NULL, s);
}
return(0);
}
让我们编译并运行上面的程序,这将产生以下结果:
12
13
14
正题
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* 将字符串转换成数组 */
void str2arr(char *str, int arr[]){
printf("your input:%s", str);
int i=0;
char temp[strlen(str)];
char *token;
if(str != NULL){
token=strtok(str, " ");
while(token!=NULL){
arr[i]=atoi(token);//将字符串转换成int类型
/* printf("arr[%d]=%d\n", i,arr[i]); */
token=strtok(NULL, " ");
i++;
}
}
}
int main(void){
int node_num=0, i;
printf("Please enter the number of nodes:");
scanf("%d", &node_num);
getchar();
char str[10000];
int arry[node_num];
printf("Please input the node list:\n");
//scanf("%s", str);
fgets(str, 10000, stdin);
str2arr(str, arry);
for(i=0; i<node_num; i++){
printf("arry[%3d]=%3d\n", i, arry[i]);
}
return 0;
}
输出结果:
Please enter the number of nodes:3
Please input the node list: 12 34
56 your input:
12 34 56
arry[ 0]= 12
arry[ 1]= 34
arry[ 2]= 56
谢谢阅读!!!