在文件中查找字符串[C]

在文件中查找字符串[C],c,C,有人能告诉我如何在不使用函数的情况下在.txt文件中查找字符串(您在程序中输入的字符串)吗?(只需要一个算法就可以了)例如:我有一个名为NAMES.txt的文件,第一行的姓氏用空格隔开: John-Peter-Paul 在我的程序中,我输入name,例如Paul,它会在该文件中找到它,然后写下“name is there” name=Paul 我想到了一种方法,如果我输入Paul到我的程序中,它将一行一个地扫描该文件中的所有字符,如果name[1]=p,它将开始扫描和比较字母,如果它们是相同的,

有人能告诉我如何在不使用函数的情况下在
.txt
文件中查找字符串(您在程序中输入的字符串)吗?(只需要一个算法就可以了)例如:我有一个名为
NAMES.txt
的文件,第一行的姓氏用空格隔开:

John-Peter-Paul

在我的程序中,我输入name,例如
Paul
,它会在该文件中找到它,然后写下
“name is there”

name=Paul

我想到了一种方法,如果我输入Paul到我的程序中,它将一行一个地扫描该文件中的所有字符,如果
name[1]=p
,它将开始扫描和比较字母,如果它们是相同的,它将每次将计数器
p
增加一个
(p++)
如果名称的
p=lenghth
,那么名称就在那里(在我的脑海中可能会出现一个错误,如果你输入
Paul
,在文件中有一个名称Paula,它实际上会写
“名称在那里”
,如果我使用该方法,但它不应该无法调试)


有人能告诉我我的书面方法是否可以实现吗

我建议避免将整个文件读入内存。大文件可能会导致大量内存消耗,这远远不够理想

想必您在内存中某处有要搜索的字符串;它已经在分配中了。创建该字符串大小的另一个分配,并将大量字节读入其中。。。不要忘记说明
'\0'
字符串终止符

检查是否匹配。如果字符串匹配,那么很明显,您已经在该文件中找到了匹配项。如果没有,请将数组左移一个字节,然后在其末尾读取另一个字节。冲洗,起泡,重复,直到找到匹配的


您提到的bug意味着您需要在文件中的某个地方使用字符串终止符。从技术上讲,字符串终止符是
'\0'
,但可以替换任何终端值。只要在阅读时用
'\0'
替换您选择的值(可能是空白?)。

函数对于此任务非常有用,因为您可以将整个字符串存储在缓冲区中,而不是一次存储一个字符

 fgets(name,100,fp)
其中,
name
是存储字符串读取的字符串指针,
100
是要读取的字符数,
fp
是要从中读取的文件指针


然后,您可以使用函数
strcmp()
来比较字符串和要搜索的
名称。这样就消除了与其他名称匹配的可能性。

是的,您编写的方法是可以实现的。你真的试过编码你的算法了吗?如果没有,我建议你试一试,如果你卡住了,问问我们。如果是,请告诉我们您走了多远,您被困在哪里,我们应该能够帮助您。是的,我会尝试这样做,但正如下面提到的人所说,我认为这是无效的。@JeremyP我正在尝试编写代码,但我需要找到一些命令,将给定位置的文件中的字符分配给变量。例如,在我的文件中有名字Paul Peter,我想从该文件中给变量c赋值char“t”,比如c=fgetc[7],所以c将存储char“t”,但是fgetc不起作用如果
“Pa”
发生在
name+97
,并且
“ul”
发生在下一次读取的开始,会发生什么?从技术上讲,
“Paul”
出现在文件中,但您的(部分)方法无法识别它。@Freenode newbostonesbivor是的,但这正是他不想要的,我认为是这样,正如他在
Paula
示例中解释的那样。因此,根据你所说的,先生,每个单词都会在一个特别大的文件中找到。