pobieranie liter

0

Witam ! Chcialbym sie dowiedziec, jakim sposobem wczytac do jakiegos stringa dajmy na to 5 liter z pliku jakiegos.. no bo kminilem z getc, getchar, z czyms takim:

#include <stdio.h>

int main(void) /* void wersja(void) */
{ 
  int a, licznik=0, c;
  FILE *p;
  
  p=fopen("ver","r");
  
  while((a=getc(p))!=EOF)
   {
     licznik++ ;
   }
  
  char ver[licznik];
  
  while((c=getc(p))!=EOF)
   {
     putc(c,ver);
   }
   
   fclose(p);
   printf("%s",ver);
   
  return 0;
}

i nic ;]
Jestem bardzo poczatkujacy wiec wiadomo jak to jest ;)
pomocy
z gory dzieki, pozdrawiam

0
	void getString(FILE *f, char *string)
	{
		do
		{
			fgets(string, <font color="green">255</font>, f);
		} while ((string[0] == '/') || (string[0] == '\n'));
		return;
	}

opis:
Pierwszy parametr to zmienna typu FILE
Drugi to wskaźnik na "string"

Funkcja dział w ten sposób, że pobiera ileś znaków (tu 255, zaznaczone na zielono), dodatkowo pomija ciąg jeżeli pierwsze znak = '/' lub '\n' (znak nowej lini)

0

Dzieki za odpowiedz !
W mysl tego co napisalas przeksztalcilem:

#include <stdio.h>

int main(void) 

{ 
  int licznik=0;
  FILE *p;
  
  p=fopen("ver","r");
  
  while((getc(p))!=EOF)
   {
     licznik++ ;
   }
  
  char ver[licznik];
  
  fgets(ver, licznik, p);
   
   
   fclose(p);
   printf("%s", ver);
   
  return 0;
}

kompiluje sie bez bledow, ale...

bash-2.05b$ cat ver
1
bash-2.05b$ ./wersja
Xä(???=P??? ???Xbash-2.05b$
bash-2.05b$

hmm.. ;] cos nie tak :P

pozdro !

0

hmm sproboj z fseek i fread

0

ej kurna identyczny efekt [???]
wiem że początkujący jestem, no ale żeby to samo non-stop :|

0

koleś chce 5 liter z pliku do stringa a wy mu cuda wymyślacie

ifstream plik; plik.open("sciezka");
char tab[5];
for(int i=0;i<5;i++) plik.get(tab[i]);
plik.close();
0

koleś chce 5 liter z pliku do stringa a wy mu cuda wymyślacie

ifstream plik; plik.open("sciezka");

spox tylko ze tutaj cuda musza byc potrzebne bo to nie jest win32 :P
tylko linux i nie ma tutaj zestawu iostream

0

spox tylko ze tutaj cuda musza byc potrzebne bo to nie jest win32 :P
tylko linux i nie ma tutaj zestawu iostream
To sie popisales :-P

0

Nonie ma takich cudów ;]
Swoją drogą to zamieniłem tamto '1' w ver - pliku z którego ma czytać na np. 'a' i ten sam efekt ;] Liczba a znak... ja już nic nie rozumiem :D

0

To jest działający kod w C++. A jakiego Ty kompilatora używasz? gcc? Bo jak tak, to nic dziwnego, że nie działa. Kompiluje się za pomocą kompilatora g++ programy napisane w C++...

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
   ifstream plik; 

   char tab[5];
   
   plik.open("ver");
   plik.get(tab,6);//n+1 znaków
   plik.close();
   
   cout <<tab<<endl;
   
   cout <<"Nacisnij ENTER aby zakonczyc..."<<endl;
   getchar();

   return 0;   
}

Sprawdź to, a jak nie działa, to napisz jaki masz kompilator i w jakiej wersji...

0

spox tylko ze tutaj cuda musza byc potrzebne bo to nie jest win32
tylko linux i nie ma tutaj zestawu iostream

strumienie są częścią języka C++

PS. To nie win32, to dos albo jego konsolowa emulacja. :-P

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