|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Genova
Messaggi: 5676
|
[c]fclose e salta tutto!!!
il codice è quello sotto. così funziona perfettamente , però se provo a mettere fclose(file); insieme agli altri mi si impalla tutto (segmentation-fault)....
non è che qualcuno saprebbe anche dirmi il perchè? credevo di essere fuori dal limite del file, quini ho proato a usare rewind, ma il problema rimane perchè? grazie, ciao! Codice:
#include <stdio.h>
#define SIZE 20
int confronto(char*,char*,int);
int inizializza(FILE* file, char *stringaTemp, int lunghezza);
int main(){
FILE * file, *nuovo, *log;
char stringa2[SIZE],stringaTemp[SIZE], stringa1[SIZE];
int riga = 0, i,lunghezza = 0, occorrenze = 0;
char carattere;
if((nuovo = fopen("modificato.txt","w+")) == NULL){
return 1;
}
if((log = fopen("dati.txt","w+")) == NULL){
return 1;
}
if((file = fopen("testo.txt","r")) == NULL){
return 1;
}
printf("inserici la stringa da cercare\n");
scanf("%20s", stringa1);
printf("inserici la stringa da sostituire\n");
scanf("%20s", stringa2);
//calcola la dimensione della stringa da cercare
for(i = 0; i < SIZE; i++){
if(stringa1[i] != NULL){
lunghezza++;
}else{
break;
}
}
while(inizializza(file,stringaTemp,lunghezza) != -1){
if(confronto(stringa1,stringaTemp,lunghezza)){
fprintf(nuovo,"%s", stringa2);
occorrenze++;
}else{
fprintf(nuovo,"%c", stringaTemp[0]);
}
fseek(file,-(lunghezza-1), SEEK_CUR);
}
}/*fine while*/
fclose(nuovo);
fclose(log);
fclose(file);
return 0;
}
int confronto(char* stringa1,char* stringa2,int len){
int i;
for(i = 0; i < len; i++){
if(stringa1[i] != stringa2[i]){
return 0;
}
}
return 1;
}
int inizializza(FILE* file, char *stringaTemp, int lunghezza){
int i;
//inizializza l'array con i primi caratteri
for(i= 0; i < lunghezza; i++){
if(fscanf(file,"%c",&stringaTemp[i]) != 1){
fclose(file);
return -1;
}
}
}
|
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Re: [c]fclose e salta tutto!!!
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:45.



















