gpt4 book ai didi

c - 有关 C 字符串 I/O 的帮助

转载 作者:行者123 更新时间:2023-11-30 14:29:19 25 4
gpt4 key购买 nike

读取 .txt 文件并将所有通过 isalpha() 的字符放入字符数组中。对于空格,它放置\0,因此数组中的字符由字符串分隔。这有效。

我需要第二部分的帮助。我需要读取用户输入的字符串(我们将其称为目标字符串),在 char 数组中查找目标字符串的所有实例,然后对于每个实例:1.打印目标字符串之前的5个单词2. 打印目标字符串本身3.并打印目标字符串后面的5个单词

我不明白,我对 C 总体来说是个新手,从 Java 过来后我发现这个 i/o 真的很困难。任何帮助将不胜感激,这是我现在拥有的代码:

#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);
}

最佳答案

这里存在很多问题,但最让您困惑的一个可能是您所掌握的 strstr 的使用。两个参数都是字符串;第一个是大海捞针,第二个是针。 C 字符串的定义(基本上)是以“\0”结尾的字符序列。看看您是如何构建 wordArray 的;它实际上是一系列一个接一个的字符串。因此,当您第一次使用 strstr 时,您只会查看第一个字符串。

我意识到这不是您正在寻找的完整答案,但希望它能为您指明正确的方向。您可能需要考虑构建一个 char * 数组,该数组指向每个单词的 wordArray。迭代该新数组,检查用户正在查找的字符串。如果找到它,您现在就有了一个可以前后工作的索引。

关于c - 有关 C 字符串 I/O 的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4823987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com