Jump to content
alex_cismas

C cat function

Recommended Posts

Posted (edited)

As vrea si eu sa stiu unde e eroarea in acest program, si de ce se blocheaza in terminal.


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

#define LINE 100

/*void clear_s(char*);*/

int main(int argc, char* argv[])
{
char *s;
int i;
int c;
char car;

if (argc>2)
{
fprintf(stderr,"EROARE!");
return 1;
}
FILE *fid;
fid=fopen(argv[1],"r");
if (fid==NULL)
{
fprintf(stderr,"Nu pot sa deschid fisierul!");
return 1;
}
printf("\n %ld",ftell(fid));
while (!feof(fid))
{
i=0;
while(1)
{
fscanf(fid,"%c",&car);

if (car=='\n')
{
break;
}
i=i+1;

}

s=(char*)malloc(i*sizeof(char));

fseek(fid,-i,SEEK_CUR);
fgets(s,i,fid);
c=ftell(fid);
printf("%d ::: %s",c,s);
free(s);
getchar();
}
printf("\n");
fclose(fid);
return 0;
}
/*
void clear_s(char *s)
{
int i;
for (i=0;i<LINE;i++)
{
s[i]=0;
}
}
*/

Edited by alex_cismas
am inlocuit quote cu code
Posted

Ai avut 18 erori...au mai ramas 2 pe care nu le gasesc

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

#define LINE 100

/*void clear_s(char*);*/

int main(int argc, char* argv[]);
{
char *s;
int i;
int c;
char car;

if (argc>2);|
{
fprintf(stderr,"EROARE!");
return 1;
}
FILE *fid;
fid=fopen(argv[1],"r");
if (fid==NULL)
{
fprintf(stderr,"Nu pot sa deschid fisierul!");
return 1;
}
printf("\n %ld",ftell(fid));
while (!feof(fid));
{
i=0;
while(1);
{
fscanf(fid,"%c",&car);

if (car=='\n');
{
break;
}
i=i+1;

}

s=(char*)malloc(i*sizeof(char));

fseek(fid,-i,SEEK_CUR);
fgets(s,i,fid);
c=ftell(fid);
printf("%d ::: %s",c,s);
free(s);
getchar();
}
printf("\n");
fclose(fid);
return 0;
}
/*
void clear_s(char *s)
{
int i;
for (i=0;i<LINE;i++)
{
s[i]=0;
}
}
*/

Posted

Eu folosesc Turbo C++ 3.2...:-?

Fi atent ca e eroare in prima linie la stdio.h si la a 9-a linie cu acolada...zice ca declaratia e terminata incompelt...is clasa 9-a,abia acum invat C++,imi pare rau ca nu te pot ajuta.

Posted

In linie de comanda avem gcc -o cat cat_t.c asha e salvat la mine programul,dupa care executam ./cat fisier (putem lua acelasi fisier cat). Acesta va afisa la apasarea butonului enter cate o linie pe ecran, dar nu va mai iesi din program.Dupa afisarea intregului program va afisa niste linii goale. Eroare de care nu`mi dau seama este cum sa fac sa se opreasca dupa terminarea afisarii programului.

Posted

pai zici ca-ti da hang undeva nu? pornesti in debug si cand vezi ca s-a hang-uit(face un ciclu infinit sau ceva) il opresti si vezi exact in ce functie/ciclu/linie/fisier e in executie. Este destul de important sa inveti sa faci debug. Eu unul nu m-as putea lipsi de el. Poti folosi visual studio pe windows, am crezut ca esti pe linux cand am vazut gcc(deaia am recomandat gdb)

Posted (edited)

Incearca asta in loc de fgets(s,i,fid); - o sa opreasca while-ul


if (!fgets(s,i,fid))
break;

se pare ca !feof(fid) ala nu prea opreste while-ul

sau ceva mai clean schimbi while-ul in:

while (getc(fid))!=EOF)

Edited by alien

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...