vanhalen
21-06-2005, 20:42
Ho fatto questo programma che conta in un array di struct quante volte compaiono le parole in un testo preso da un file.
Il problema è che l'eseguibile (pure dal prompt) non fa niente... carica un po' e
basta. Il programma è sviluppato su Dev-C++ e pure in questo ambiente la finestra di esecuzione si apre e dopo un istante si chiude!
Help
#include <stdio.h>
#include <string.h>
#define SIZE 20
struct count {
char nome[14];
int n;
};
typedef struct count lista;
int RicercaEsaustiva(lista *,char *);
main(){
lista persone[SIZE];
int i;
for(i=0; i<=SIZE-1; i++){
strcpy(persone[i].nome,"");
persone[i].n=0;
}
char parola[14];
FILE *fPtr;
int resp=0;
i=0;
if ((fPtr=fopen("testo.h", "r")) == NULL)
printf("Non posso aprire il file\n");
else{
while (!feof(fPtr)){
fscanf(fPtr, "%s", parola);
if((resp=RicercaEsaustiva(persone, parola)) != -1)
persone[resp].n=persone[resp].n + 1;
else{
strcpy(persone[i].nome,parola);
persone[i++].n=1; <----------------------------------------
}
}
for(i=0; i<=SIZE-1;i++)
printf("%-14s%10d\n", persone[i].nome, persone[i].n);
}
system("pause");
return 0;
}
int RicercaEsaustiva(lista *p, char *str){
int u=0;
for (u=0; u<=SIZE-1; u++){
if (!strncmp(p[u].nome,str, 14 ))
return u;
}
return -1;
}
.........................................................................................................
Mi da questo problema (strano ma vero) da quando ho messo i++ nell'else del ciclo del main.
Boh!!
Il problema è che l'eseguibile (pure dal prompt) non fa niente... carica un po' e
basta. Il programma è sviluppato su Dev-C++ e pure in questo ambiente la finestra di esecuzione si apre e dopo un istante si chiude!
Help
#include <stdio.h>
#include <string.h>
#define SIZE 20
struct count {
char nome[14];
int n;
};
typedef struct count lista;
int RicercaEsaustiva(lista *,char *);
main(){
lista persone[SIZE];
int i;
for(i=0; i<=SIZE-1; i++){
strcpy(persone[i].nome,"");
persone[i].n=0;
}
char parola[14];
FILE *fPtr;
int resp=0;
i=0;
if ((fPtr=fopen("testo.h", "r")) == NULL)
printf("Non posso aprire il file\n");
else{
while (!feof(fPtr)){
fscanf(fPtr, "%s", parola);
if((resp=RicercaEsaustiva(persone, parola)) != -1)
persone[resp].n=persone[resp].n + 1;
else{
strcpy(persone[i].nome,parola);
persone[i++].n=1; <----------------------------------------
}
}
for(i=0; i<=SIZE-1;i++)
printf("%-14s%10d\n", persone[i].nome, persone[i].n);
}
system("pause");
return 0;
}
int RicercaEsaustiva(lista *p, char *str){
int u=0;
for (u=0; u<=SIZE-1; u++){
if (!strncmp(p[u].nome,str, 14 ))
return u;
}
return -1;
}
.........................................................................................................
Mi da questo problema (strano ma vero) da quando ho messo i++ nell'else del ciclo del main.
Boh!!