您的位置:首页 > 其它

文件操作--利用首单词查找整行信息

2011-05-09 17:42 246 查看
/*

功能:利用文件首个单词信息查找,单词所在行的完整信息
作者:flonlen
文件名:searchchar.c

*/

#include<stdio.h>
#include<string.h>

/*****  函数功能:读入文件指针,返回要查找的字符串首地址的指针  ********/

char * search(FILE * file_open,char *file_char3)
{
char file_char2[20] = "\0";            //存储每一行的首个单词字符串
char file_char[100] = "\0";            //存储每一行正行字符串
int i = 0;

do
{
fgets(file_char,30,file_open);        //读取整行字符串

for(i = 0;i < 20;i++)                //清除残留字符
file_char2[i] = '\0';
i = 0;

while(file_char[i] != ' ')            //读取字符串的首个单词
{
file_char2[i] = file_char[i];
i++;
}
i = 0;
if(feof(file_open))                    //文尾结束循环
break;
}while(strcmp(file_char2,file_char3) != 0);

if(strcmp(file_char2,file_char3) != 0)        //如果找到要找的单词,返回从新输入
{
printf("输入错误!\n");
return NULL;
}
i = strlen(file_char3);

while(file_char[i] == ' ')        //判断下一个单词的其实位置
i ++;

return file_char + i ;        //返回从下一个单词开始的字符串
}

/*********************      主函数        ************************/

int main(int argc, char *argv[])
{
FILE * file_open;
char file_name[30],out_char;    //文件名、功能判断符
char file_char3[20] = "\0";            //存储要查询的单词
char *p;        //字符串首地址指针

PRINT_FILE:

printf("请输入要查找的文件名称:");
scanf("%s",file_name);

file_open = fopen(file_name,"r");            //打开文件

if(file_open == NULL)
{
printf("输入错误,请从新输入!\n");
goto PRINT_FILE;
}

FILE_INFO:

fseek(file_open,0L,SEEK_SET);        //将文件的指针指向文首

printf("请输入要查找的信息:");
scanf("%s",file_char3);                //输入要查询的首字符串

p = search(file_open,file_char3);            //输入文件指针和要查找字符串的首地址指针,并返回具体信息
if(p == NULL)
goto FILE_INFO;
printf("\n%s\n",p);
printf("重新输入信息请输入1,重新输入文件名请输入2,退出请输入任意键:");
getchar();
out_char = getchar();                    //定义接下来的动作

if(out_char != '1' && out_char != '2')        //判断接下来的动作
{
fclose(file_open);
return 0;
}

switch(out_char)            //判断接下来的动作
{
case '1': goto FILE_INFO;
case '2': goto PRINT_FILE;
}

fclose(file_open);        //关闭文件操作
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐