Я хотел бы проанализировать слова внутри текстового файла (длину каждого слова, начальный символ и т. Д.).Для этого первым шагом является чтение каждого слова из файла и его сохранение в массиве.
В следующем коде мне удалось сохранить все символы внутри массива, но я не разделил их наслова.
#include <stdio.h>
#include <stdlib.h>
FILE *inp;
char arr[100];
int i = 0;
int word_count = 0;
char c;
int char_count = 0;
inp = fopen("string_in.txt", "r");
while ((c = fgetc(inp)) != EOF) {
if (c == ' ' || c == '\n') {
printf("\n");
arr[char_count] = c;
word_count++;
}
else {
//printf("%c", c); //print to check if file is being read correctly
arr[char_count] = c;
printf("%c",arr[char_count]);
}
char_count++;
}
printf("\n");
printf("Chars: %d, Words: %d\n", char_count, word_count+1);
printf("From array: \n");
for(i = 0; i <= word_count; i++) {
printf("%c",arr[word_count]);
}
printf("\n");
fclose(inp);
return (EXIT_SUCCESS);
Входной текст:
This is a test
Вывод:
This
is
a
test
Chars: 15, Words: 4
From array:
This is a test
Я хотел бы получить доступ к следующим элементам:
arr[0] = 'This'
arr[3] = 'Test'
но так как я строка за символом, а не словом:
arr[0] = 'T'
arr[3] = 's'
Любые предложения о том, как это можно расширить для хранения полных слов?
РЕДАКТИРОВАТЬ:
Согласно ответу ниже:
while ((c = fgetc(inp)) != EOF) {
if (c == ' ' || c == '\n') {
printf("\n");
arr[word_count][char_count] = '\0'; //Terminate the string
char_count = 0; //Reset the counter.
word_count++;
}
else {
arr[word_count][char_count] = c;
printf("%c",arr[word_count][char_count]);
}
(char_count < 99)? (char_count++):(char_count = 0);
}
printf("From array: \n");
for(i = 0; i < word_count; i++) {
printf("%s",arr[word_count]);
}
Печатает без вывода из массива.
This
is
a
test
Chars: 5, Words: 4
From array:
Press [Enter] to close the terminal ...