C: Hvordan gemmer jeg en string i en tmp fil?
Jeg har problemer med en del af mit program. Jeg har fået det til at udvælge en tilfældig kategori og printe denne, og vælge et random ord i kategorien og printe dette.Jeg vil nu gerne gemme ordet (ALine) i en tmpfil (så jeg kan benytte ordet i andre dele af programmet). Er det den smarteste måde at gøre det på, her en min kode:
Det er nederst i koden det går galt med at gemme i den tmpfil..
#include "myheader.h"
int getcategory(void)
{
system("cls");
int Tal, i, ATal, n;
char Line[1024], ALine[1024];
{
FILE *f = fopen("category.txt", "r");
if(!f)
{
fprintf(stderr, "Failed to open category.txt\n");
return EXIT_FAILURE;
}
srand(time(NULL));
Tal = 1 + rand()%3;
for(i = 0; i < Tal; i++)
fgets(Line, sizeof(Line), f);
fclose(f);
}
printf("\n\n\nThe category is:\n\n\n");
printf("\n%s\n\n\n\n\n\n", Line);
printf("Hit enter to pick a random word in the category displayed\n");
system("pause");
if (Tal == 1)
{
FILE *animals = fopen("animals.txt", "r");
if(!animals)
{
fprintf(stderr, "Failed to open animals.txt\n");
return EXIT_FAILURE;
}
srand(time(NULL));
ATal = 1 + rand()%6;
for(i = 0; i < ATal; i++)
fgets(ALine, sizeof(ALine), animals);
printf("%s", ALine);
}
if (Tal == 2)
{
FILE *food = fopen("food.txt", "r");
if(!food)
{
fprintf(stderr, "Failed to open food.txt\n");
return EXIT_FAILURE;
}
srand(time(NULL));
ATal = 1 + rand()%6;
for(i = 0; i < ATal; i++)
fgets(ALine, sizeof(ALine), food);
printf("%s", ALine);
}
if (Tal == 3)
{
FILE *places = fopen("places.txt", "r");
if(!places)
{
fprintf(stderr, "Failed to open places.txt\n");
return EXIT_FAILURE;
}
srand(time(NULL));
ATal = 1 + rand()%6;
for(i = 0; i < ATal; i++)
fgets(ALine, sizeof(ALine), places);
printf("%s", ALine); //printer ALine
}
system("pause");
//JEG VIL GERNE GEMME ALine I tmp_ALine
FILE *tmp_ALine;
tmp_ALine = tmpfile();
putc(ALine, tmp_ALine);
fprintf(tmp_ALine, "%s");
system("pause");
n = strlen(ALine);
if (isalpha(ALine[i]))
printf("\n\n\n\n\n");
for(i = 0; i <=n; ++i)
printf("_ ", ALine[i]);
printf("\n\n\n\n");
system("pause");
getchar();
return 0;
}
VH
MPKJ