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

时间:2015-07-29 09:58:33

标签: c

有人能告诉我如何在.txt文件中找到字符串(你在一个程序中输入)而不使用函数吗?(只需要一个算法,没有别的)示例:我有文件名为NAMES.txt的第一行的姓氏与空格分开:

John Peter Paul

在我的程序中输入名称Paul,然后在该文件中找到它并写入"the name is there"

name = Paul;

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

任何人都可以告诉我,我的书面方法是否可以实现?

2 个答案:

答案 0 :(得分:0)

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

据推测,你有一个字符串可以在内存中搜索;它已经在分配中了。创建该字符串大小的另一个分配,并将多个字节读入其中...不要忘记考虑'\0'字符串终止符。

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

您提到的错误意味着您需要在文件中的某个字符串终止符。从技术上讲,字符串终止符是'\0',但您可以替换任何终结值。只需用'\0'替换您选择的值(可能是空格?),就可以了解。

答案 1 :(得分:0)

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

 fgets(name,100,fp)

其中name是存储字符串读取的字符串指针,100是要读取的字符数,fp是要从中读取的FILE指针。

然后您可以使用函数strcmp()来比较字符串和name you want to search。因此,它将消除与其他名称匹配的其他可能性。