C 如何编写监控文本文件中新数据的程序

C 如何编写监控文本文件中新数据的程序,c,file-io,io-redirection,C,File Io,Io Redirection,我有一个程序,下面的代码,它监视一个文本文件,逐行获取数据并将输出打印到另一个文件 当程序运行时,并非所有数据都会出现在文件中。文本文件将在几天内写入 我需要能够模拟程序写入文本输入文件。我该怎么做 我在Windows 7上运行,为了测试这一点,我运行了以下命令行: 输入CON>input.txt 但是当我在中运行代码时,它是空的,因此代码立即返回。如何修复此问题,以便代码正确地打开文件。我还需要它继续“轮询”(不确定这是否是正确的术语),直到它看到一个“e”字符作为行的第一个字符,然后才能关闭

我有一个程序,下面的代码,它监视一个文本文件,逐行获取数据并将输出打印到另一个文件

当程序运行时,并非所有数据都会出现在文件中。文本文件将在几天内写入

我需要能够模拟程序写入文本输入文件。我该怎么做

我在Windows 7上运行,为了测试这一点,我运行了以下命令行:

输入CON>input.txt

但是当我在中运行代码时,它是空的,因此代码立即返回。如何修复此问题,以便代码正确地打开文件。我还需要它继续“轮询”(不确定这是否是正确的术语),直到它看到一个“e”字符作为行的第一个字符,然后才能关闭

我使用参数运行程序:myprog.exe input.txt output.txt

代码如下:

/* Prints ranges of numbers in format n number1 number2 where character n
   indicates 2 numbers to follow. print from n1+1 to n2.  e indicates end 
   of numbers to process.
*/
#include <stdio.h>

int main(int argc, char* argv[]) {
   char s[100];
   int mn, mx;
   int items = 0;

   if(argc == 3) {
      FILE* in=fopen(argv[1],"r+");
      FILE* out=fopen(argv[2],"w");
      if(in && out) {
         setbuf(in, NULL);
         setbuf(out, NULL);
         while((items = (fscanf(in, "%s %d %d", &s, &mn, &mx))) > 0) {
            switch(s[0]) {
            case 'n':
               /* print nos. to out */
               while(mn++ < mx) {
                  fprintf(out, "%d\n", mn);
                  fflush(out);
               }

               break;
            case 'e':  fclose(in); fclose(out); return 0;
            default:
               /* error */
               break;
            }
         }
         fclose(in);
         fclose(out);
      }

   } else {
    fprintf(stderr, "Wrong no arguments\n");
   }

   return 0;
}
/*以格式n number1 number2打印数字范围,其中字符n
指示要跟随的2个数字。从n1+1打印到n2。e表示结束
要处理的数字的数量。
*/
#包括
int main(int argc,char*argv[]){
chars[100];
int-mn,mx;
整数项=0;
如果(argc==3){
文件*in=fopen(argv[1],“r+”;
FILE*out=fopen(argv[2],“w”);
如果(输入和输出){
setbuf(in,NULL);
setbuf(out,NULL);
而((项目=(fscanf(在、%s%d%d、&s、&mn和&mx中))大于0){
开关(s[0]){
案例“n”:
/*将编号打印出来*/
while(mn++
我只需在打开输入文件时删除+即可:

FILE* in=fopen(argv[1],"r");
我猜想,如果我将stdin重定向到输入文件,那么stdin只是一种方式——因此不允许输入文件可写