Читает файл .txt и помещает все символы, которые передают isalpha () в массив символов. для пробелов ставится \ 0, поэтому символы в массиве разделяются строками. Это работает.
Мне нужна помощь со второй частью. Мне нужно прочитать строку, которую вводит пользователь (давайте назовем ее целевой строкой), найти все экземпляры целевой строки в массиве char и затем для каждого экземпляра:
1. напечатайте 5 слов перед целевой строкой
2. распечатать целевую строку
3. и напечатайте 5 слов после целевой строки
Я не могу понять, я новичок в C в целом, и я считаю, что это очень сложно после ввода с Java. Любая помощь будет оценена, вот код, который я сейчас имею:
#include <stdio.h>
#include <string.h>
main(argc, argv)
int argc;
char *argv[];
{
FILE *inFile;
char ch, ch1;
int i, j;
int arrayPointer = 0;
char wordArray [150000];
for (i = 0; i < 150000; i++)
wordArray [i] = ' ';
/* Reading .txt, strip punctuation, conver to lowercase, add char to array */
void extern exit(int);
if(argc > 2) {
fprintf(stderr, "Usage: fread <filename>\n");
exit(-1);
}
inFile = fopen(argv[1], "r");
ch = fgetc(inFile);
while (ch != EOF) {
if(isalpha(ch)) {
wordArray [arrayPointer] = tolower(ch);
arrayPointer++;
}
else if (isalpha(ch1)) {
wordArray [arrayPointer] = '\0';
arrayPointer++;
}
ch1 = ch;
ch = fgetc(inFile);
}
fclose;
/* Getting the target word from the user */
char str [20];
do {
printf("Enter a word, or type \"zzz\" to quit: ");
scanf ("%s", str);
char* pch;
pch = strstr(wordArray, str);
printf("Found at %d\n", pch - wordArray + 1);
pch = strstr(pch + 1, str);
} while (pch != NULL);
}