ho risolto molte cose, ma c'e' qualcosa che ancora non mi e' chiaro.
Dato il seguente codice
se dichiaro:int i;
double num1,num2, num3;
char *myString[i];
//char *myString1, *myString2, *myString3;
int main(void);
int readFromFile(void);
int writeToFile(void);
int main(void){
int error;
error = readFromFile();
if(error)
return error;
error = writeToFile();
if(error)
return error;
return kErrorNo;
}
int readFromFile(void){
FILE *myEnter;
printf("...Reading from file %s\n", kFileToRead);
printf("\n");
myEnter = fopen(kFileToRead,"r");
if(myEnter==NULL)
return kErrorIO;
for(i=0;i<3;i++){
myString[i] = calloc(kMaxStringLength, sizeof(char));
if(myString[i]==NULL)
return kErrorMemory;
fscanf(myEnter,"%s",myString[i]);
printf("String = %s\n",myString[i]);
}
printf("\n");
fclose(myEnter);
for(i=0;i<3;i++){
free(myString[i]);
}
return kErrorNo;
char *myString[i]; il compilatore mi dice "variable-size type declared outside of any function"
se invece dichiaro solo
char *myString;
mi vengono riportati 3 warning e nell'eseguirlo mi da un segmentation fault:
1 warning: assignment makes integer from pointer without a castcountElement.
2 warning: comparison between pointer and integer
3 warning: passing argument 1 of ‘free’ makes pointer from integer without a cast
rispettivamente riferiti alle righe:
myString[i] = calloc(kMaxStringLength, sizeof(char));
if(myString[i]==NULL)
free(myString[i]);
volevo far notare che se al posto del ciclo for mettessi
myString1 = calloc(kMaxStringLength, sizeof(char));
myString2= calloc(kMaxStringLength, sizeof(char));
myString3 = calloc(kMaxStringLength, sizeof(char));
cambiando tutto di conseguenza il codice funge perfettamente.
qualcuno che mi sappia suggerire qualcosa in proposito?
saluti.