追晨小筑
张扬着易逝又不悔的青春。
/*

功能:利用文件首个单词信息查找,单词所在行的完整信息
作者: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;
}
posted on 2011-05-09 17:42  flonlen  阅读(271)  评论(0编辑  收藏  举报