在文件中查找字符串[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
示例中解释的那样。因此,根据你所说的,先生,每个单词都会在一个特别大的文件中找到。