Я довольно новичок в C и поэтому сталкиваюсь с некоторой путаницей с использованием указателей.C - извлечение слов из строки
Я пытаюсь извлечь слова из строки символов ASCII. Например, если у меня есть строка @@ Hello..world >>, я хочу получить слова «Hello» и «world» из строки и добавить их в мой связанный список.
Слово определяется как любая последовательность букв, и каждое слово составляет не более 64 байт. Кроме того, любой символ, в котором функция isspace() возвращает ненулевое значение, считается пробелом.
В основном, я просматриваю строки из файла с помощью fscanf, затем для каждой строки, вызывающей мою функцию read_words (char * s), чтобы получить правильные слова из строки и добавить их в мой связанный список для дальнейшего использовать.
Вот мой код, который, похоже, вызывает ошибку, связанную с указателем.
struct node {
char *val;
struct node *next;
int count;
} *words = NULL;
void read_words(char *s)
{
struct node *tmp;
char word[64+1];
int i, check, wordStarted = 0, count = 0;
for (i = 0; s[i] != '\0'; i++)
{
if ((isspace(s[i]) != 0) || !isalpha(s[i]))
{
if (wordStarted == 1)
{
check = check_list(word);
if (check != 1) {
word[count] = '\0';
tmp = malloc(sizeof(struct node));
tmp->val = word;
tmp->count = 1;
tmp->next = words;
words = tmp;
}
count = 0;
wordStarted = 0;
}
}
else
{
word[count++] = s[i];
wordStarted = 1;
}
}
}
Любая помощь с этим была бы высоко оценена!
Спасибо!
Попробуйте 'strtok'. Он разбивает строку на части, основываясь на любом количестве разделительных символов. – chris
Вы пытались выполнить [debug] (http://en.wikipedia.org/wiki/GNU_Debugger) свой код? – Zeta
, пожалуйста, разместите реализацию check_list() –