Как разбить строку на первый пробел - PullRequest
0 голосов
/ 08 мая 2018

У меня есть строка чисел, как это: 160 01 11 12 33 44 44 ... и я хочу разделить с самого начала и до первого пробела, как это: 160 | 01 11 12 33 44 44 .... Например, я мог бы поместить строку перед первым пробелом в массиве и строку после в другом массиве, так что.

arr1 [] = '160'

arr2 [] = '01 11 12 33 44 44 ...'

Я извлекаю строку этого типа из файла, поэтому мой код такой:

int le_ficheiro(char* filename) {
FILE *ficheiro=fopen(filename,"r");
size_t len=0;
char *line=NULL;
ssize_t read;
if(ficheiro==NULL) {
    exit(EXIT_FAILURE);
}



while((read = getline (&line, &len,ficheiro))!=-1)   //read line by line
{
    printf("Retrieved line of length %zu:\n",read);
    printf("%s\n",line);
    printf("Aqui : %c\n",line[0]);

}
fclose(ficheiro);
if(line)
    free(line);
exit(EXIT_SUCCESS);

Мне нужна помощь, как мне это сделать.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018
const char* str;
char first[5] ,rest[50]; 
sscanf(str, "%d %s", first,rest);
int first_i = atoi(first);

или

double first_d = atof(first);

это тоже должно работать.

0 голосов
/ 08 мая 2018

Вы можете использовать strtok, чтобы разбить вашу строку. Вот справочная страница .

В этом конкретном случае достаточно найти первый пробел и разделить.

char *s1;
char *s2;
char *sp;

sp = strchr(line, ' ');
if (!sp) { exit(EXIT_FAILURE); }

s1 = strndup(line, sp-line); /* Copy chars until space */
s2 = sp+1; /* Skip the space */

...

free(s1);
...