Is it possible to overide a for loop condition?
I need to enter this for loop for(index = optind; index < argc; index++){: and use stdin
Code:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[]){
int optchar;
int index;
FILE *fp;
int lineCount = 1;
int nflag = 0;
int sflag = 0;
int vflag = 0;
int tflag = 0;
int c;
int endline = 1;
int newlineCount = 0;
int cntrlFlag = 0;
int keyboardFlag = 0;
while((optchar = getopt (argc, argv, "nsvt")) != -1){
switch(optchar){
case 'n':
nflag = 1;
break;
case 's':
sflag = 1;
break;
case 'v':
vflag = 1;
break;
case 't':
tflag = 1;
break;
}
}
if(argv[2] == NULL){
keyboardFlag = 1;
}
for(index = optind; index < argc; index++){
if(keyboardFlag == 1){
fp = stdin;
}else{
fp = fopen(argv[index], "r");
}
if(fp == NULL){
fprintf(stdout,"File %s couldn't be opened!\n", argv[index]);
}
while((c = fgetc(fp)) != EOF){
cntrlFlag = 0;
if(c != '\n'){
newlineCount = 0;
}
if(nflag && endline){
if(sflag && newlineCount < 2){
printf("%5d ", lineCount);
lineCount++;
}
if(!sflag){
printf("%5d ", lineCount);
lineCount++;
}
endline = 0;
}
if(iscntrl(c) && tflag && c != '\n'){
c += 64;
printf("^%c", c);
cntrlFlag = 1;
}
if(newlineCount < 2 && sflag && !cntrlFlag){
printf("%c", c);
}
if(!sflag && !cntrlFlag){
printf("%c", c);
}
if(c == '\n'){
endline = 1;
newlineCount++;
}
}
fclose(fp);
}
return 0;
}