[英]Reading TEXT Files C
下面的文本文件是我正在處理的標准。
基本上,我想記錄整個以下文本文件的處理過程涉及多少時間。
重要的行是第一行,並且行以“ if”開頭。 'if'行的處理方式如下:如果i <3 i = i + 1轉到8,則假定i初始化為0。
這意味着只要我小於3,控件就應該跳到第8行
10
1fi
if i < 3 i=i+1 goto 8
3sdkfj
4ksdkk
5kdkfk
6kdkjf
7dkjkfd
if k < 2 k=k+1 goto 2
9dkkf
10dku
if j < 2 j=j+1 goto 2
我的問題是,使用fopen打開文本文件並使用fgets收集行...我將如何使用fgets返回fgets已處理的行,即執行上述文本文件中的if語句建議並返回到第2行。無需再次打開文本文件並執行任何操作...
到目前為止,我的代碼可以收集in.file中任何給定文本文件中的第一行和行數,如下所示:
./JobA.txt
./JobB.txt
./JobC.txt
./JobD.txt
我的代碼:
#include <errno.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <ctype.h>
#include "projscheduler.h"
/* I/O Files */
//static char *inputFile;
char * in;
static FILE *input;
static FILE *cur;
/*Scheduled jobs indexed by PID*/
struct job list[20];
/* the next job to schedule */
//static struct job *job_next = NULL;
/* Time */
time
clock;
/*Initialises job list*/
static void initialise_list(void) {
for(int i = 0; i < sizeof(list)/sizeof(list[0]); i++) {
list[i].parameters.pid = -1;
}
}
/*Order Jobs*/
/*=static void order_jobs(void)
{
for(int i=0; i < sizeof(list)/sizeof(list[0]); i++)
{
}
*/
/** Read and parse input from input file */
static void parse_input(void)
{
char buffer[BUFSIZ];
char lines[BUFSIZ];
int jobs = 0;
struct job *current;
initialise_list();
while( fgets(buffer, sizeof(buffer), input) )
{
time start;
char buf[BUFSIZ];
sscanf(buffer,"./%s/", buf);
cur = fopen(buf, "r" );
int steps = 0;
while( fgets(lines, sizeof(lines), cur) )
{
if( steps == 0 )
{
current = &list[jobs];
strcpy(current->job_id, buf);
sscanf(lines,"%ld", &start);
current->parameters.start = start;
}
steps++;
}
current->parameters.scheduled = steps;
jobs++;
fclose(cur);
}
for (int i = 0; i < jobs; i++)
{
printf("%s %ld %ld\n", list[i].job_id, list[i].parameters.start, list[i].parameters.scheduled);
}
}
int main(int argc, char **argv)
{
in = argv[1];
if ( (input = fopen(in, "r")) == NULL ) {
fprintf(stderr, "cannot open %s\n", argv[1]);
}
parse_input();
fclose(input);
return EXIT_SUCCESS;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.