Atps - Contador De Linhas Em C
Monografias: Atps - Contador De Linhas Em C. Pesquise 862.000+ trabalhos acadêmicosPor: kabukijown • 21/9/2013 • 942 Palavras (4 Páginas) • 512 Visualizações
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
/*Protótipo*/
void ccRun(char nArquivo[],int comentario,int lVazias);
int main(int argc, char *argv[])//argc: Conta Quantos argumentos são passados para o main, *argv[]: Armazena os argumentos passados num vetor de strings.
{
/*Variaveis*/
int comentario,lVazias,i;
/*Teste Lógico*/
if(argc<=2){//Se argc for <=2 é porque contém apenas o nome do programa.
comentario=0;//então não tem nenhum comentario.
lVazias=0;// e nenhuma linha vazia.
}else{//se for maior que 2...
for(i=0;i<argc;i++){
if(strcmp("-c",argv[i])==0){//verifica se na posição em que está o argv[] existe alguma solicitação de combinação de caracteres do tipo "-c".
comentario=1;//se Houver então existem comentario(s) e serão exibidos!
}
if(strcmp("-v",argv[i])==0){
lVazias=1;//O mesmo para Linhas Vazias.
}
}
}
ccRun(argv[argc-1],comentario,lVazias);//Na Chamada de função são passados por parametros: argv[nomedoprograma],comentario e linhas se validos.
cout<<"\n";
return(0);
}
void ccRun(char nArquivo[],int comentario,int lVazias)
{
int c,nCod,cLetra,j;
int flCom=0,flComtw=0,regComent=0,regLvazia=0,flVaz=0,flVaztw=1;
FILE * pArquivo;
char caracteres[sizeof(pArquivo)*1024];//Aqui a string foi criada para armazenar cada caracter do arquivo. O sizeof retorna o valor em kbytes por isso o nosso arquivo foi multplicado por 1024b. ou seja 1kb.
pArquivo=fopen(nArquivo,"r");//Abre o arquivo no modo read.
if(pArquivo!=NULL){//valida o arquivo
do{//repita até...
c=fgetc(pArquivo);//fgetc pega cada caracter dentro do arquivo aberto.
if(c=='\n'){//se fgetc localizou um pulo de linha então...
nCod++;//pulo de linha é contado.
}
cLetra++;//contador de caracteres para mover o array "caracteres".
caracteres[cLetra]=c;//armazena um por um cada caracter "na posição atual do contador".
}while(c!=EOF);
fclose(pArquivo);
}else if(strcmp("-h",nArquivo)!=0){
cout<<"Impossivel Abrir o Arquivo! "<<endl;}
for(j=0;j<cLetra;j++){//Laço para rodar todo o arquivo ->
if(caracteres[j]=='/' && caracteres[j+1]=='*'){//se o vetor na posição atual for igual a " /* " então ->
flCom=1;//Flag indicando que a(s) linha(s) estão sendo comentadas ou seja igual a 1(valido).
...