2010-12-23 43 views
1

这个网站是一个巨大的知识来源,它在过去帮助过无数次。C中的文本文件解析 - 不是调用批处理文件

我刚刚开始学习C我自己 - 直到现在我只写了几个批处理文件。

所以我谦恭地请求您的帮助 - 我想就如何写一个C程序,将一些准则:

  • 1)打开包含以下

一个文本文件"batch1.cmd" "argument1" "1"

"batch2.cmd" "argument2" "0"

"batch3.cmd" "argument3" "1"

  • 2)解析它来寻找 “0” 或 “1”

    如果 “1”呼叫他指定的批处理文件,它的参数

    如果 “0”去下一行 - 我会定期更新文本文件,因此我只需要更改1或0而不是重写所有这些行。

我发现了很多关于解析帮助ç在互联网上了,但没有关于如何实现这一教程。 我知道这看起来很容易,我必须表现得很懒惰,但我向你保证我已经三天了,没有任何成功。

我不一定要求一个完整的脚本,只是一个像“看看下面的函数,它的正确语法是yadda yadda”等等的答案。

我想我将不得不使用

int Search_in_File(char *fname, char *str)

{ FILE *fp;

fp=fopen("c:\\batchlist.txt", "r");

system("c:\\batch1.cmd argument1");

但我无法“连接点”。

在此先感谢!

+0

你已经打开的文件。接下来的事情(在检查“fopen”成功后)是从中读取。考虑`fread`和`fgets`,决定你喜欢这个任务。 – 2010-12-23 11:23:01

+0

对于这个任务,特别是鉴于它是一个文本文件,fgets()可能是最适合你的。不要忘了在完成文件时fclose()文件! – AlastairG 2010-12-23 12:11:15

回答

1

看看http://en.wikipedia.org/wiki/C_file_input/output - 你非常接近。打开文件后,您需要从文件中读取行或字符,并根据您找到的内容执行system命令。

这wiki页面会告诉你如何 - 它有一些有用的示例代码太:)

0
int Search_in_File(char *fname, char *str) 

{ FILE *fp; 
char line[100],a[100],b[100],c[100]; 
fp=fopen("c:\\batchlist.txt", "r"); 
if(!fp) ... errorhandling here ... 
while(fgets(line,100,fp)) 
{ 
    if(strchr(line,'\n')) *strchr(line,'\n')=0; 
    if(3==sscanf(line,"%s%s%s",a,b,c) && !strcmp(c,"1")) /* "%s" breaks at whitespaces, attention for whitespaces in your strings here! */ 
    { 
    sprintf(line,"%s %s",a,b); 
    system(line); 
    } 
} 
... 
fclose and so on ... 
} 
相关问题