Atps C
Seminário: Atps C. Pesquise 862.000+ trabalhos acadêmicosPor: yurisalles • 22/9/2013 • Seminário • 2.732 Palavras (11 Páginas) • 241 Visualizações
ETAPA 1
Após os passos propostos nesta etapa, fizemos um programa com um modulo principal Main e outro modulo auxiliar ccRun, com a finalidade de contar as linha do código e as linhas comentadas, sejam em linhas simples “//” ou em blocos “/*”.
ETAPA 2
Entregar o código fonte, em complemento ao que foi entregue na etapa anterior, que apresente uma função principal capaz de processar os parâmetros e opções estabelecidos nesta etapa.
ETAPA 3
Entregar o código fonte, em complemento ao que foi entregue na etapa anterior, que apresente uma função principal capaz de contabilizar o número de linhas total de um arquivo de código fonte em linguagem C. Em complemento, o programa deve também contabilizar o número de linhas com comentários simples, multi-linhas e o número de linhas “em branco” (sem comentários e/ou instruções de código).
Código Fonte:
#include<stdio.h>
#include<stdlib.h>
void ccRun(char nomeArquivo[],int comentario,int vazia); //Protótipo de função
int main(int argc, char *argv[]){
int i=0,coment=0,vazia=0;
if(argc==2){
coment=0;
vazia=0;
}else{
for(i=0;i<argc;i++){
if(strcmp("-c",argv[i])==0){
coment=1;
}
if(strcmp("-v",argv[i])==0){
vazia=1;
}
}
}
ccRun(argv[argc-1],coment,vazia);
printf("\n");
return(0);
}
void ccRun(char nomeArquivo[],int comentario, int vazia){
FILE *pArquivo;
int c=0,nCod=0,nCom=0,bCom=0,lCom=0,nVaz=0,cVaz=0,lVaz=0,cont=0,i=0;
char texto[sizeof(pArquivo)*1024];
pArquivo=fopen(nomeArquivo,"r");
if(pArquivo!=NULL){
do{
c=fgetc(pArquivo);
//Checar número de linhas
if(c=='\n'){
nCod++;
}
//Fim
texto[cont]=c;
cont++;
}while(c!=EOF);
fclose(pArquivo);
}else if(strcmp("-h",nomeArquivo)!=0){
printf("\nImpossivel de abrir o arquivo!\n");
exit(1);
}
//Contador de comentários e linhas brancas
for(i=0;i<cont-1;i++){
//Comentários em blocos
if(texto[i]=='/' && texto[i+1]=='*'){
bCom=1;
nCom++;
}
if(bCom==1 && texto[i]=='\n'){
nCom++;
}
if(texto[i]=='*' && texto[i+1]=='/'){
bCom=0;
}
//Fim
//Comentário de linha única
if(lCom==1 && texto[i]!=' '){
if(texto[i]=='/' && texto[i+1]=='/'){
nCom++;
}else{
lCom=0;
}
}
if(texto[i]=='\n'){
lCom=1;
}
//Fim
//Linhas vazias
if(lVaz==1 && cVaz==1 && texto[i]=='\n'){
nVaz++;
lVaz=0;
}
if(lVaz==1 && texto[i]!=' ' && texto[i]!='\n'){
cVaz=0;
}
if(texto[i]=='\n'){
lVaz=1;
cVaz=1;
}
//Fim
}
//Fim
printf("\n");
if(strcmp("-h",nomeArquivo)!=0){
printf("Programa contador de linhas\n");
printf("\nArquivo: \"%s\"\n",nomeArquivo);
printf("\nTotal
...