I’ve got this code finally working with a single arguement on my command line, i.e. one file for it to work with, although I designed the code with the concept of it working with an unlimited number of files. What it does is take some X number of txt files containing words seperated by spaces, and replaces spaces with \n thus creating a list of words. Though, it successfully completes the first argument, it seg faults when I add two, or three, really want to get this working!
PS. This is a continuation from 2 other posts on the same code. This is not a homework task, I am currently away from Uni, and just experimenting with C file i/o in advance of our lectures.
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char** argv) {
FILE *fpIn, *fpOut;
int i, j;
j = 1;
int c;
char myString[256];
printf("%d", argc);
printf("\n");
printf("The following arguments were passed to main(): ");
for(i=1; i<argc; i++) printf("%s ", argv[i]);
printf("\n");
while(argc--) {
for(i = 1; i <= argc; i++) {
fpIn = fopen(argv[j], "rb");
snprintf(myString, 256, "%s~[%d]", argv[j], i);
fpOut= fopen(myString, "wb");
while (1) {
c = fgetc(fpIn);
if ( c == EOF)
break;
if (isspace(c))
c = '\n';
fputc(c, fpOut );
}
j++;
}
}
return 0;
}
It looks like you’ve got two loops there doing the same thing!
You really only need one loop in order to iterate over the arguments. If you use the while loop, then use argc or j as the index to argv. If you use the for loop, which is the neater way, use the for loop argument
ias the index to argv.