Pagini recente » Cod sursa (job #2065318) | Cod sursa (job #914183) | Cod sursa (job #1418015) | Cod sursa (job #1423885) | Cod sursa (job #1849178)
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *file=fopen("text.in", "r");
fseek(file, 0L, SEEK_END);//poniter care masoara dimensiunea fisierului(nr de caractere)
int dim=ftell(file);//returneaza valoarea pointerului (ultima pozitie scrisa in fisier = dimensiunea totala a caracterelor de citit)
fseek(file, 0L, SEEK_SET);//mergem din nou la inceputul fisierului pentru a citi datele din el
char *str=malloc(dim+1);//alocam dinamic pe heap memoria necesara citirii datelor din fisier
fread(str, dim, 1, file);//citim din fisier caracterele
unsigned int i=0, words=0,len=0;//unsigned pentru ca astea nu-s niciodata negative, si pt alt motiv.
char in_word,was_word;//pt ca nu am nevoie mai mult de 1 byte de memorie pentru asta (de aia fol char)
for(i=0;i<dim;++i)
{
(str[i]>='A'&&str[i]<='Z')||(str[i]>='a'&&str[i]<='z')?(++len,in_word='1',was_word='1'):(in_word='0');
(in_word=='0'&&was_word=='1')?(++words,was_word='0'):(words);//mi-e lene sa fac cu if.
}//i know, I'm a moron
free(str);//eliberam memoria alocata dinamic pe heap
str=NULL;//golim datele
fclose(file);
FILE *fileo=fopen("text.out", "w");
fprintf(fileo, "%\d",(int)len/words);
fclose(fileo);
return 0;
}