У меня есть строка, например «101 1 13», и мне нужно разбить ее на int aux [3] ->, в результате чего aux [0] = 101, aux [1] = 1 и aux [2] = 13 (в данном случае). Как можно Я делаю это?Как разбить строку на int [3]
В примере приведенного ниже кода я получаю op как строку и хочу получить значение INTs там. Каждый int делится на строку пробелом ("").
Другая деталь: Мне нужен код для компиляции с флагом -std = c99, поэтому принятый ответ не сработает.
#include <stdio.h>
#include <stdlib.h>
//example of str = "101 1 14" (char *)
// example of output = {101, 1, 14}(int *)
int* stoi(char *str) {
// function to split str into 3 ints
}
int main() {
char op[10];
int num[3];
scanf("%s\n", op);
num = stoi(op);
printf("%d %d %d", num[0], num[1], num[2]);
return 0;
}
Вы уверены, что 'scanf()' не повесил трубку с возвратом каретки? – ryyker
'strncpy' - ваш друг.(например, 'strncpy (tmp, str, 3)", а затем либо 'aux [0] = atoi (tmp);' или 'aux [0] = (int) strtol (tmp, NULL, 10);' Или, 'scanf'. Также см.: [** Я делаю результат malloc? **] (http://stackoverflow.com/q/605845/995714) –
' scanf ("% s \ n", op); while (op! = EOF) ... '' EOF' - это возможное возвращаемое значение 'scanf', а не возможное значение для преобразования. Это должно читать' while (scanf ("% s \ n", op) = = 1) ... '. Кроме того,' op' имеет длину 6 символов, которая может содержать до пяти символов. Ваша строка примера не подходит. Более того, вы, вероятно, столкнетесь с переполнением буфера. –