Ir para conteúdo
Fórum Script Brasil
  • 0

ajuda com erro na abertura de arquivo


aninha1988

Pergunta

:unsure:

quando digito o seguinte codigo em c...

#include <stdio.h>

#include <string.h>

#include <errno.h>

#include <conio.h>

#define MAXV 20

#define MAXM 10001

int main(){

char*linha;

int a;

int v[MAXV];

int i;

int b;

int nc;

FILE*arquivo;

b=0;

arquivo=fopen("entrada.txt", "r");

fscanf(arquivo, "%d", &a);

if((a<1)||(a>MAXM)){

printf("\nErro: O numero lido excede o numero maximo de operacoes aceito pelo programa!!!\n\n");

printf("\nO programa aceita no maximo 10000 operacoes de troca!!!\n\n");

ferror(arquivo);

}

linha=(char*)malloc(100);

fgets(linha, 100, arquivo);

nc=strlen(linha);

if(nc<1){

printf("\nErro: não existe string no arquivo!!!\n\n");

ferror(arquivo);

}

for(i=0; i<MAXV; i++){

fscanf(arquivo, "%d", v);

b=b+1;

}

printf("%d\n", a);

printf("%d\n", v[0]);

printf("%s\n",linha);

getch();

}

O Devc++ executa e compila...porem o meu programa só esta imprimindo a leitura da primeira linha do arquivo...no caso... o a...

o compilador apresenta dois erros....e mesmo assim forma o arquivo executavel...

Permission denied

ld returned 1 exit status

alguém sabe o que são esses erros e auql o problema com o meu codigo???????

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
:unsure:

quando digito o seguinte codigo em c...

#include <stdio.h>

#include <string.h>

#include <errno.h>

#include <conio.h>

#define MAXV 20

#define MAXM 10001

int main(){

char*linha;

int a;

int v[MAXV];

int i;

int b;

int nc;

FILE*arquivo;

b=0;

arquivo=fopen("entrada.txt", "r");

fscanf(arquivo, "%d", &a);

if((a<1)||(a>MAXM)){

printf("\nErro: O numero lido excede o numero maximo de operacoes aceito pelo programa!!!\n\n");

printf("\nO programa aceita no maximo 10000 operacoes de troca!!!\n\n");

ferror(arquivo);

}

linha=(char*)malloc(100);

fgets(linha, 100, arquivo);

nc=strlen(linha);

if(nc<1){

printf("\nErro: não existe string no arquivo!!!\n\n");

ferror(arquivo);

}

for(i=0; i<MAXV; i++){

fscanf(arquivo, "%d", v);

b=b+1;

}

printf("%d\n", a);

printf("%d\n", v[0]);

printf("%s\n",linha);

getch();

}

O Devc++ executa e compila...porem o meu programa só esta imprimindo a leitura da primeira linha do arquivo...no caso... o a...

o compilador apresenta dois erros....e mesmo assim forma o arquivo executavel...

Permission denied

ld returned 1 exit status

alguém sabe o que são esses erros e auql o problema com o meu codigo???????

o primeiroo erro eu posso ajudar o segundo eu num sei so esta lendo uma linha porque o vetor esta fora do while

for(i=0; i<MAXV; i++){

fscanf(arquivo, "%d", v);

b=b+1;

} // while esta termiando aqui ou seja so imprime o vetor na posição 0

printf("%d\n", a);

printf("%d\n", v[0]); // ovalor da posição 0

printf("%s\n",linha);

getch();

}

para arrumar esse problema coloca a chave depois ficando assim

for(i=0; i<MAXV; i++){

fscanf(arquivo, "%d", v);

b=b+1;

printf("%d\n", a);

printf("%d\n", v[0]);

printf("%s\n",linha);

}

getch();

}

Link para o comentário
Compartilhar em outros sites

  • 0

eu arrumei o lance do indice e do looping...e o codigo tah assim

#include <stdio.h>

#include <string.h>

#include <conio.h>

#define MAXV 20

#define MAXM 10001

int main(){

char linha[100];;

int a;

int v[MAXV];

int i;

int b;

int nc;

FILE*arquivo;

b=0;

arquivo=fopen("entrada.txt", "r");

fscanf(arquivo, "%d", &a);

if((a<1)||(a>MAXM)){

printf("\nErro: O numero lido excede o numero maximo de operacoes aceito pelo programa!!!\n\n");

printf("\nO programa aceita no maximo 10000 operacoes de troca!!!\n\n");

exit(1);

}

fgets(linha, 100, arquivo);

nc=strlen(linha);

if(nc<1){

printf("\nErro: não há string no arquivo!!!\n\n");

exit(1);

}

for(i=0; i<MAXV; i++){

fscanf(arquivo, "%d", &(v));

b=b+1;

printf("%d\n", v);

}

printf("%d\n", a);

printf("%s\n",linha);

getch();

}

só que ainda tem algum erro....o meu arquivo de entrada tem as seguintes linhas...

3

ATATGCGA

3 6 4 8 3 4

era pra imprimir...

3

3

6

4

8

3

4

ATATGCGA

e tah imprimindo...

3

3998056

não consigo entender porque????

Link para o comentário
Compartilhar em outros sites

  • 0

oi Ana

bem eu axo que é mais ou menos isto

#include <stdio.h>
#include <string.h>
#include <conio.h>


#define MAXV 20
#define MAXM 10001


int main(){

char linha[100];;
int a,t=0;
char v[MAXV];
char car[MAXV];
int i,ch;
int b;
int nc;
char bo;
FILE*arquivo;
b=0;


arquivo=fopen("entrada.txt", "r");

fscanf(arquivo, " %d", &a);
if((a<1)||(a>MAXM)){
printf("\nErro: O numero lido excede o numero maximo de operacoes aceito pelo programa!!!\n\n");
printf("\nO programa aceita no maximo 10000 operacoes de troca!!!\n\n");
getchar();getchar();
exit(1);
}
/*fgets(linha, 100, arquivo);
nc=strlen(linha);
if(nc<1){
printf("\nErro: não há string no arquivo!!!\n\n");
getchar();getchar();
exit(1);
}*/


printf(" %d\n", a);
getchar();


for(i=0; i<MAXV; i++){
     while(fscanf(arquivo, " %c", &ch) != EOF){
     

       
        printf(" %c\n", ch); 
        
        
                  }
                  printf("\n não há mais caracteres no arquivo!!!\n\n");
                  getchar();exit(1);
        }
}

Agora só falta a comparação com os caracteres, eo seja, se for caracter não imprime e mete num vector, senão imprime....

Nota só no fim imprimes o vector de caracteres.

Bem agora axo que tá facil mas deixo pa você

Cumprimentos de Portugal

Link para o comentário
Compartilhar em outros sites

  • 0
oi Ana

bem eu axo que é mais ou menos isto

#include <stdio.h>
#include <string.h>
#include <conio.h>


#define MAXV 20
#define MAXM 10001


int main(){

char linha[100];;
int a,t=0;
char v[MAXV];
char car[MAXV];
int i,ch;
int b;
int nc;
char bo;
FILE*arquivo;
b=0;


arquivo=fopen("entrada.txt", "r");

fscanf(arquivo, " %d", &a);
if((a<1)||(a>MAXM)){
printf("\nErro: O numero lido excede o numero maximo de operacoes aceito pelo programa!!!\n\n");
printf("\nO programa aceita no maximo 10000 operacoes de troca!!!\n\n");
getchar();getchar();
exit(1);
}
/*fgets(linha, 100, arquivo);
nc=strlen(linha);
if(nc<1){
printf("\nErro: não há string no arquivo!!!\n\n");
getchar();getchar();
exit(1);
}*/


printf(" %d\n", a);
getchar();


for(i=0; i<MAXV; i++){
     while(fscanf(arquivo, " %c", &ch) != EOF){
     

       
        printf(" %c\n", ch); 
        
        
                  }
                  printf("\n não há mais caracteres no arquivo!!!\n\n");
                  getchar();exit(1);
        }
}

Agora só falta a comparação com os caracteres, eo seja, se for caracter não imprime e mete num vector, senão imprime....

Nota só no fim imprimes o vector de caracteres.

Bem agora axo que tá facil mas deixo pa você

Cumprimentos de Portugal

Obrigada...vou tentar implementar o codigo com a mudança que você sugeriu...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...