Zmienna nazwa pliku zapis

0

Witam ma taki problem chce w C aby program zapisywał tablice do pliku txt ale ze zmienna nazwa tzn. jak mam zmienna rozmiara to aby nazwa pliku była taka sama jak ustawiona wartosc rozmiar.Bo obecnie musze to robic recznie.Da sie jakos to zrobic?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{

FILE *wdp;
int rozmiar;
int *tablica;
int i;
int N;
srand(time(0));
rozmiar =230000;
N=rozmiar;
tablica = (int*) malloc(rozmiar * sizeof(*tablica)); 
if ((wdp=fopen("230000.txt","w"))==NULL )
{
printf("nie mozna otworzyc pliku\n");
printf("\n\n Wcisnij jakis klawisz");

}

for(i=0;i<N;i++) tablica[i]=rand()*rand();

printf("Przed sortowaniem. \n");
for(i=0;i<N; i++) {
printf("%d\n", tablica[i]);
fprintf(wdp, "%d\n",tablica[i]);
}

fclose(wdp);
0

Tak. Zamien wartość rozmiaru na łańcuch znaków i dolep rozszerzenie.

0

ok a jak to zrobic?

0

caly czas nie moge tego przekonwertować w ogóle da sie cos takiego zrobic??
[Error] invalid conversion from 'int' to 'const char*' [-fpermissive]

0

Zacznij od jakiegoś ludzkiego formatowania, bo tego czytać nie idzie: http://format.krzaq.cc/

Z przytoczonego błędu można się domyślić, że próbujesz przypisać zmienną typu int do const char*. Prawdopodobnie potrzebujesz utworzyć bufor, za pomocą sprintf skonwertować liczbę do char[] i dopiero wtedy doklejać.

0

pomysł z trzymaniem informacji o rozmiarze tablicy int w nazwie pliku jest po prostu słaby. Proponuję inne rozwiązanie. Nazwij po ludzku swój plik, w którym będziesz przechowywał same dane, np. data.txt. Następnie w przypadku:

a) zapisu tablicy (danych liczb) do pliku robisz tak:

FILE* file = fopen(filename, "wb");

następnie tablicę z danymi zapisujesz w następujący sposób:

int* data = calloc(dataSize, sizeof(int));

/* wypelnianie tablicy */

fwrite((const char*)data, sizeof(*data), dataSize, file);

b) odczytu tablicy z pliku robisz tak:

FILE* file = fopen(filename, "rb");

piszesz prostą funkcję getFileSize, z której zwrócisz sobie rozmiar pliku, a następnie:

size_t fileSize = getFileSize(file);
size_t dataSize = fileSize / sizeof(int);

/* ... */

int* data = calloc(dataSize, sizeof(int));
fread(data, sizeof(*data), dataSize, file);

i w taki sposób odczytasz sobie dane, jakie wcześniej zapisywałeś do pliku.

0

a da sie tak zrobic aby w fopen(filename, "rb") zamiast filename zadeklarowac jakas zmienna. tak zebym sobie petla zalatwil generowanie nazw plikow??

1

Tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0