有人能告诉我如何在.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"
但是不应该无法调试)
任何人都可以告诉我,我的书面方法是否可以实现?
答案 0 :(得分:0)
我建议避免将整个文件读入内存。大文件可能会导致大量内存消耗,这远非理想。
据推测,你有一个字符串可以在内存中搜索;它已经在分配中了。创建该字符串大小的另一个分配,并将多个字节读入其中...不要忘记考虑'\0'
字符串终止符。
检查它是否匹配。如果字符串匹配,那么很明显,您在该文件中找到了匹配项。如果它没有,则将数组向左移一个字节,将另一个字节读到它的末尾。冲洗,起泡,重复,直至找到匹配。
您提到的错误意味着您需要在文件中的某个字符串终止符。从技术上讲,字符串终止符是'\0'
,但您可以替换任何终结值。只需用'\0'
替换您选择的值(可能是空格?),就可以了解。
答案 1 :(得分:0)
函数fgets()
对此任务非常有用,因为您可以将整个字符串存储在缓冲区中,而不是一次存储一个字符。
fgets(name,100,fp)
其中name
是存储字符串读取的字符串指针,100
是要读取的字符数,fp
是要从中读取的FILE指针。
然后您可以使用函数strcmp()
来比较字符串和name you want to search
。因此,它将消除与其他名称匹配的其他可能性。