Я пытаюсь создать функцию, которая будет возвращать n-е слово в массиве символов, например, если строка:
aaa bbb ccc ddd eee
И, скажем, я хочу получить третье слово в строке, поэтому он должен вернуть ccc
.
Вот что у меня есть:
#include <stdio.h>
#define SIZE 1000
static char line[SIZE];
int length_to_space(char *s){
char *i = s;
while(*i != ' ' && *i != '\0'){
i++;
}
return i - s;
}
char * split_space(char * string, int index){
char *pointer = string;
int counted = 0;
while(*pointer != '\0'){
if(*pointer == ' '){
if(counted == index){
int new_size = length_to_space(++pointer);
char word[new_size];
for(int i = 0; i < new_size; i++){
word[i] = *(pointer + ++i);
return word;
}
}
counted++;
}
pointer++;
}
return 0;
}
int main(){
fgets(line, SIZE, stdin);
char * word = split_space(line, 2);
printf("%s\n", word);
return 0;
}
Когда я запускаю это, я даю ему строку, похожую на строку в примере вышеЯ получаю ошибку сегментации.Поэтому я хотел бы знать, что я делаю неправильно, или есть другой подход к проблеме.
Спасибо за помощь!