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