[C] generowanie liczb do tab i zapis

0

Napisałem kod programu który generuje losowo liczby do tablicy tab[100][10], a potem zapisuje te liczby do pliku, niestety za kazdym razem do pliku zapisuje ten sam ciąg 2293672

Nie wiem co zrobiłem źle.

#include <stdlib.h> 
#include <stdio.h> 
#include <time.h>

int main(int argc, char *argv[])
{
  int tab[100][10], i, j;
  FILE *fp;
  srand(time(NULL)) ;
    for(i=0; i<100; i++)
    for(j=0; j<10; j++)
    tab[i][j] = (rand() %10) +1;
  fp = fopen("plik.txt", "w");
  fprintf (fp,"%d", tab[i][j]);
 
  system("PAUSE");	
  return 0;
}
0
fprintf (fp,"%d", tab[i][j]);

Policz na palcach ile w tym miejscu wynoszą i,j.
Podpowiem ci że nie spełaniają już warunku i,j<100 bo wyszły z pętli...
Oznacza to ze wpisujesz do pliku jakieś losowe wartości leżące ZA tablicą. Brawo.

0

Zrobiłem cos takiego w pliku zapisuje 1000 liczb ale nie wiem czy to są te liczby które zostały wylosowane w rand.

#include <stdlib.h> 
#include <stdio.h> 
#include <time.h>

int main(int argc, char *argv[])
{
  int tab[100][10], i, j;
  FILE *fp;
  srand(time(NULL)) ;
    for(i=0; i<100; i++)
    for(j=0; j<10; j++)
    tab[i][j] = (rand() %10) +1;
  fp = fopen("plik.txt", "w");
  for(i=0; i<100; i++)
    for(j=0; j<10; j++)
  fprintf (fp,"%d", tab[i][j]);
 
  system("PAUSE");	
  return 0;
}
0

Są, ale gdybyś formatowal kod jak porządny czlowiek to byłoby ci łatwiej...

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main(int argc, char *argv[])
{
  int tab[100][10], i, j;
  FILE *fp;
  srand(time(NULL)) ;

  for (i=0; i<100; i++)
    for (j=0; j<10; j++)
      tab[i][j] = (rand() %10) +1;

  fp = fopen("plik.txt", "w");
  for (i=0; i<100; i++)
    for (j=0; j<10; j++)
      fprintf (fp,"%d", tab[i][j]);

  system("PAUSE");
  return 0;
}

0

zmieniłem trochę kod, chciał bym teraz wczytać z tego pliku wartości do tablicy 100x10 oraz wyswietlic ja na ekranie. nie wiem jak wczytać te liczby do tablicy z wyswietleniem już sobie jakoś poradzę.

moge prosić o małą pomoc?

#include <stdlib.h> 
#include <stdio.h> 
#include <time.h>

int main(int argc, char *argv[])
{
  int tab[1000], i;
  int tab2[100][10], k, l;
  FILE *fp;
  srand(time(NULL)) ;
  
  fp = fopen("plik.txt", "w");
    for(i=0; i<1000; i++)
      tab[i] = (rand() %10) +1;
 
  for(i=0; i<1000; i++)
    fprintf (fp,"%d", tab[i]);
      fclose (fp);
 
  fp = fopen("plik.txt" , "r" );
  
    system("PAUSE");	
  return 0;
}
0

fscanf()

0

Jakieś fiku miku mi wywala:/

Chyba chodzi o to fscanf(fp, "k l", tab2); gdyby to była tab jednowymiarowa zamiast k l wystarczy podac jedna wartość, a tu z lekka się gubię. Jeszcze jedno, przed fscanf nie powinnienem zrobić pętli?

#include <stdlib.h> 
#include <stdio.h> 
#include <time.h>

int main(int argc, char *argv[])
{
  int tab[1000], i;
  int tab2[100][10], k, l;
  FILE *fp;
  srand(time(NULL)) ;
  
  fp = fopen("plik.txt", "w");
    for(i=0; i<1000; i++)
      tab[i] = (rand() %10) +1;
 
  for(i=0; i<1000; i++)
    fprintf (fp,"%d", tab[i]);
      fclose (fp);
 
  fp = fopen("plik.txt" , "r" );
  fscanf(fp, "k l", tab2);
  
   for(k=0; k<100; k++)
  {
  printf("\n");
  for(l=0; l<10; l++)
    printf("%d ", tab2[k][l]);
  }
    system("PAUSE");	
  return 0;
}

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