pulsenergy
11-02-2008, 10:53
Salve a tutti... sono un principiante alle prese con la programmazione C per superare il corso di informatica 1 di ingegneria elettrica. Ho qualche problema a lavorare con i file... riporto la mia soluzione non funzionante di questo esercizietto :
- Leggere da due file una serie caratteri (il cui numero si suppone noto), salvarli in due array, e salvare in un terzo file tutte le possibili coppie di caratteri che contengono almeno una vocale.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
int main()
{
FILE *f;
char v[10];
char w[10];
int i;
int j;
if((f = fopen("file1.txt","r")) == NULL)
{
printf("\n\n\nERRORE DI APERTURA FILE!!!\n");
exit(1);
}
fscanf(f, "%s", v);
printf("contenuto del file \n %s", v);
fclose(f);
printf("\nFile chiuso.\n");
if((f = fopen("file2.txt","r")) == NULL)
{
printf("\n\n\nERRORE DI APERTURA FILE!!!\n");
exit(1);
}
fgets(w,10,f);
printf("contenuto del file \n %s", w);
fclose(f);
printf("\nFile chiuso. Ecco i risultati:\n");
if((f = fopen("file3.txt","w")) == NULL)
{
printf("\n\n\nERRORE DI APERTURA FILE!!!\n");
exit(1);
}
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
if ((v[i] == 'a' || w[j]) == 'a' ){
fprintf (f,"%c %c ", v[i], w[j]);
printf ("%c %c ", v[i], w[j]);
}
else if ((v[i] == 'e' || w[j]) == 'e' ){
fprintf (f,"%c %c ", v[i], w[j]);
printf ("%c %c ", v[i], w[j]);
}
else if ((v[i] == 'i' || w[j]) == 'i' ){
fprintf (f,"%c %c ", v[i], w[j]);
printf ("%c %c ", v[i], w[j]);
}
else if ((v[i] == 'o' || w[j]) == 'o' ){
fprintf (f,"%c %c ", v[i], w[j]);
printf ("%c %c", v[i],w[j]);
}
else if ((v[i] == 'u' || w[j]) == 'u' ){
fprintf (f,"%c %c ", v[i], w[j]);
printf ("%c %c ", v[i],w[j]);
}
}
fclose(f);
return 0;
}
Qualcuno sa dirmi perchè nel terzo file non mi scrive mai niente nonostante abbia salvato nei file 1 e 2 tutte vocali?
Grazie mille !! ^^
- Leggere da due file una serie caratteri (il cui numero si suppone noto), salvarli in due array, e salvare in un terzo file tutte le possibili coppie di caratteri che contengono almeno una vocale.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
int main()
{
FILE *f;
char v[10];
char w[10];
int i;
int j;
if((f = fopen("file1.txt","r")) == NULL)
{
printf("\n\n\nERRORE DI APERTURA FILE!!!\n");
exit(1);
}
fscanf(f, "%s", v);
printf("contenuto del file \n %s", v);
fclose(f);
printf("\nFile chiuso.\n");
if((f = fopen("file2.txt","r")) == NULL)
{
printf("\n\n\nERRORE DI APERTURA FILE!!!\n");
exit(1);
}
fgets(w,10,f);
printf("contenuto del file \n %s", w);
fclose(f);
printf("\nFile chiuso. Ecco i risultati:\n");
if((f = fopen("file3.txt","w")) == NULL)
{
printf("\n\n\nERRORE DI APERTURA FILE!!!\n");
exit(1);
}
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
{
if ((v[i] == 'a' || w[j]) == 'a' ){
fprintf (f,"%c %c ", v[i], w[j]);
printf ("%c %c ", v[i], w[j]);
}
else if ((v[i] == 'e' || w[j]) == 'e' ){
fprintf (f,"%c %c ", v[i], w[j]);
printf ("%c %c ", v[i], w[j]);
}
else if ((v[i] == 'i' || w[j]) == 'i' ){
fprintf (f,"%c %c ", v[i], w[j]);
printf ("%c %c ", v[i], w[j]);
}
else if ((v[i] == 'o' || w[j]) == 'o' ){
fprintf (f,"%c %c ", v[i], w[j]);
printf ("%c %c", v[i],w[j]);
}
else if ((v[i] == 'u' || w[j]) == 'u' ){
fprintf (f,"%c %c ", v[i], w[j]);
printf ("%c %c ", v[i],w[j]);
}
}
fclose(f);
return 0;
}
Qualcuno sa dirmi perchè nel terzo file non mi scrive mai niente nonostante abbia salvato nei file 1 e 2 tutte vocali?
Grazie mille !! ^^