Zmienna nazwa pliku zapis

Odpowiedz Nowy wątek
Piotrek1612
2015-06-18 19:32
Piotrek1612
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);

Pozostało 580 znaków

2015-06-18 19:37

Rejestracja: 7 lat temu

Ostatnio: 1 dzień temu

0

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

edytowany 1x, ostatnio: spartanPAGE, 2015-06-18 19:38

Pozostało 580 znaków

Piotrek1612
2015-06-18 19:50
Piotrek1612
0

ok a jak to zrobic?

Pozostało 580 znaków

Piotrek1612
2015-06-18 20:26
Piotrek1612
0

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

Pozostało 580 znaków

kq
2015-06-18 20:33
kq
Moderator C/C++

Rejestracja: 6 lat temu

Ostatnio: 43 sekundy temu

Lokalizacja: Szczecin

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ć.


Pozostało 580 znaków

2015-06-18 21:00

Rejestracja: 9 lat temu

Ostatnio: 1 dzień temu

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.

Pozostało 580 znaków

Piotrek1612
2015-06-18 21:27
Piotrek1612
0

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

Pozostało 580 znaków

2015-06-18 22:00

Rejestracja: 7 lat temu

Ostatnio: 1 dzień temu

1

Tak.

Pozostało 580 znaków

Odpowiedz

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