biriba_di 0 Denunciar post Postado Novembro 17, 2011 Pessoal, bom dia! Localizei esse codigo que é um compactador de .txt, ele pede o diretorio, e assim q você coloca ele compacta todos .txt que tiverem na pasta. Porém quando eu tento compilar ele no GCC ele ta dando o seguinte erro: 14 C:\Users\limadie\Documents\LpI\C++\compacta.cpp cannot convert `char**' to `const char*' for argument `1' to `int strcmp(const char*, const char*)' 33 C:\Users\limadie\Documents\LpI\C++\compacta.cpp cannot convert `char**' to `const char*' for argument `2' to `char* strcat(char*, const char*)' 43 C:\Users\limadie\Documents\LpI\C++\compacta.cpp invalid conversion from `char' to `char*' 43 C:\Users\limadie\Documents\LpI\C++\compacta.cpp initializing argument 1 of `char* strcat(char*, const char*)' 43 C:\Users\limadie\Documents\LpI\C++\compacta.cpp invalid conversion from `char' to `const char*' 43 C:\Users\limadie\Documents\LpI\C++\compacta.cpp initializing argument 2 of `char* strcat(char*, const char*)' To quebrando a cabeça aqui, mas mexo em uma coisa, da erro em outra.. se conseguirem localizar o erro e me sinalizar! Obrigado!! Segue o codigo: #include<stdio.h> #include<stdlib.h> #include<string.h> /* Este programa compacta todos arquivos txt existentes em um determinado diretorio */ int main(int *argc, char **argv[]){ FILE *fp; char arquivo_temp[60], comando[80],arquivo_tar[60],arquivo[60]; if (strcmp(argv[1],"--h") == 0){ printf("##########################\n\n"); puts("Programa para compactar arquivos txt..."); printf("\n"); puts("Sintaxe: "); printf("\n"); puts(" #./compacta <DIRETORIO>"); printf("\n\n"); puts("Exemplo:"); printf("\n"); puts("#./compacta /tmp"); printf("\n"); puts("**compacta todos arquivos txt existentes em /tmp"); printf("\n#########################\n"); exit(0); } int i; char lista[80]="ls "; strcat(lista,argv[1]); strcat(lista,"/*.txt"); strcat(lista," > lista"); system(lista); fp = fopen("lista","r"); while(!feof(fp)){ /*fgets(string,60,fp)*/ fscanf(fp,"%s",arquivo_temp); for(i=0;i<strlen(arquivo_temp)-4;i++) strcat(arquivo[i],arquivo[i]); printf("\n\n%s\n\n",arquivo); /*criando o pacote tar*/ /*comando = 'tar -cf' arquivo_tar arquivo */ strcpy(comando,"tar -cf "); strcpy(arquivo_tar,arquivo); strcat(arquivo_tar,".tar"); strcat(comando,arquivo_tar); strcat(comando," "); strcat(comando,arquivo); system(comando); strcpy(comando,""); /*criando o pacote bz2*/ strcpy(comando,"bzip2 -z "); strcat(comando,arquivo_tar); system(comando); } system("rm *.txt -rf"); system("rm *.tar -rf"); fclose(fp); } Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Novembro 18, 2011 Olá! Provavelmente o seu erro é que você declarou argc como um ponteiro de int. Ele é, na verdade, um inteiro comum. Mude de: int main(int *argc, char **argv[]){ Para: int main(int argc, char **argv[]){ E veja se funciona. Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Novembro 18, 2011 Acho que o Renato quis dizer: int main(int argc, char *argv[]); Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Novembro 18, 2011 Opa, isso mesmo, não notei o outro erro, rs... Você pode colocar como o guidjos colocou ou como: int main(int argc, char **argv){ Dê uma estudada a mais em ponteiros, eles são muito importantes e parece que você ainda não os está entendendo bem. Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
biriba_di 0 Denunciar post Postado Novembro 18, 2011 Opa, isso mesmo, não notei o outro erro, rs... Você pode colocar como o guidjos colocou ou como: int main(int argc, char **argv){ Dê uma estudada a mais em ponteiros, eles são muito importantes e parece que você ainda não os está entendendo bem. Abraços :D Resolveu esse problema, porem ainda continua com erro nessa parte do codigo: fscanf(fp,"%s",arquivo_temp); for(i=0;i<strlen(arquivo_temp)-4;i++) strcat(arquivo,arquivo); Segue o erro: 43 C:\Users\limadie\Documents\LpI\C++\testecompacta.cpp initializing argument 1 of `char* strcat(char*, const char*)' Abraços Compartilhar este post Link para o post Compartilhar em outros sites