Я довольно новичок в 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;
}
}
}
Любая помощь с этим будет высоко ценится!
Спасибо!