我想编写一个程序,将带有数字的字符串(“1 2 3”)转换为整数数组。但是strtok()不返回值。为什么呢?
我的控制台输出为空。
编辑:我没有收到错误消息。
这是我的代码:
编辑:我没有收到错误消息。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int* string_to_array(char * string, int * myArray);
int main(void) {
int* myArray = 0;
myArray = (int*) malloc(10 * sizeof(int));
myArray = string_to_array("1 2 3 4", myArray);
printf("result: %d\n", myArray[0]);
printf("result: %d\n", myArray[1]);
return 0;
}
int* string_to_array(char * string, int * myArray){
char delimiter[] = " ";
char *ptr;
char *ptr2;
long ret;
printf("string_to_array() was called.\n");
printf("string is: %s\n", string);
ptr = strtok(string, delimiter); // here is the problem
printf("strtok done; ptr: %s\n", ptr);
int index = 0;
while(ptr != NULL) {
ret = strtol(ptr, &ptr2, 10);
printf("ret: %d\n", ret);
myArray[index] = ret;
ptr = strtok(NULL, delimiter);
index++;
}
return myArray;
}
"1 2 3 4"
上调用strtok
。strtok
会修改它的第一个参数,而字符串字面值只能被读取。请将"1 2 3 4"
放入字符数组中。 - rafix07myArray = malloc(sizeof * myArray * 10);
而不是myArray = (int*) malloc(10 * sizeof(int));
。 - chux - Reinstate Monicachar s[]和char *s之间有什么区别?
- chux - Reinstate Monica