文本文件在C中解析 - 是否调用批处理文件

时间:2010-12-23 11:19:20

标签: c parsing batch-file arguments

这个网站是一个巨大的知识来源,它在过去无数次帮助过我。

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

所以我谦卑地请求你的帮助 - 我想要一些关于如何编写C程序的指导原则:

  • 1)打开包含以下内容的文本文件

"batch1.cmd" "argument1" "1"

"batch2.cmd" "argument2" "0"

"batch3.cmd" "argument3" "1"

  • 2)解析它以找到“0”或“1”

    如果“1”调用,则指定批处理文件及其参数

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

我已经在互联网上的 C 解析中找到了很多帮助,但没有关于如何实现这一点的教程。 我知道这看起来很容易,而且我必须表现得像一个非常懒惰的人,但我向你保证,我已经三天了,但没有任何成功。

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

我想我必须使用

int Search_in_File(char *fname, char *str)

{ FILE *fp;

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

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

但我无论如何都不能“连接点”。

提前致谢!

2 个答案:

答案 0 :(得分:1)

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

该wiki页面将向您展示如何 - 它也有一些方便的示例代码:)

答案 1 :(得分: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 ...
}