I've got a .txt file written like this:
PersonName colour1 colour2 colour3
for example:
Nick blue green black
Lisa orange yellow green
Mark white blue orange
my program: editColour(fileName, colourInTheFile, colourIWant) should change the colourInTheFile with the colourIWant and return the number of times it did it. The problem is that it starts a loop
#include <stdio.h>
#include <string.h>
typedef char String[100];
int editColour(String fileName,String current_colour,String new_colour){
String name,c1,c2,c3;
int num_s = 0; /*number of occurence*/
FILE *fp = fopen(fileName,"r");
/*this is just a test, so i'm tryng to put the fileName content in this one*/
FILE *ftemp = fopen("/Users/valerio/Desktop/PROGRAMMI/C/Lezione12_esercizio1/Lezione12_esercizio1/file.txt","w+");
long pos;
while(!feof(fp)){
pos = ftell(fp);
fscanf(fp, "%s %s %s %s\n",name,c1,c2,c3);
if(strcmp(c1, current_colour)==0){
fseek(fp,pos,SEEK_SET);
fprintf(ftemp, "%s %s %s %s\n",name,new_colour,c2,c3);
num_s++;
}
if(strcmp(c2, current_colour)==0){
fseek(fp,pos,SEEK_SET);
fprintf(ftemp, "%s %s %s %s\n",name,c1,new_colour,c3);
num_s++;
}
if(strcmp(c3, current_colour)==0){
fseek(fp,pos,SEEK_SET);
fprintf(ftemp, "%s %s %s %s\n",name,c1,c2,new_colour);
num_s++;
}
fprintf(ftemp, "%s %s %s %s\n",name,c1,c2,c3);
}
fclose(fp);
fclose(ftemp);
return num_s;
}
int main(int argc, const char * argv[]) {
printf("%d\n\n", editColour("/Users/valerio/Desktop/PROGRAMMI/C/Lezione12_esercizio1/Lezione12_esercizio1/social_users copia.txt",
"orange", "poop"));
}
expected :
Nick blue green black
Lisa poop yellow green
Mark white blue poop (in the new file)
actual :
Nick blue green black
Lisa poop yellow green
Lisa orange yellow green
Lisa poop yellow green
Lisa orange yellow green
Lisa poop yellow green
Lisa orange yellow green
Lisa poop yellow green
Lisa orange yellow green
.
.
.
in loop