+ Responder ao Tópico



  1. #1

    Padrão HELP C - arquivos

    blz amigos... to com um probleminha em arquivo C

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    FILE *fp;
    char c;
    fp = fopen("arquivo.txt","r"); /* Arquivo ASCII, para leitura */
    if(!fp)
    {
    printf( "Erro na abertura do arquivo");
    exit(0);
    }
    while((c = getc(fp) ) != EOF) /* Enquanto não chegar ao final do arquivo */
    printf("%c", c); /* imprime o caracter lido */
    fclose(fp);
    return 0;
    }

    nesse caso eu imprimo tudo oq esta escrito no arquivo "entradas".

    Dentro do arquivo entradas eh assim
    |-------|
    |sei | - primeira linha do arquivo
    |1 |
    |2 |
    |3 |
    --------
    Tava olhando os codigos e vi o comando fscanf, pq preciso ler somente a primeira linha do arquivo e compara se realmente a primeira linha esta escrito SEI.

    ou eu tenho que percorrer caracter por caracter e ir armazenando num vetor? para comparar??

    alguem tem alguma ideia por favor...

    se puder expor o codigo pra dar um nocao de como eu faço


    abraço

  2. #2

    Padrão seria assim??

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
    FILE *fp;
    char c[30];
    char a = sei;
    fp = fopen("arquivo.txt","r"); /* Arquivo ASCII, para leitura */

    if(!fp)
    {
    printf( "Erro na abertura do arquivo");
    exit(0);
    }

    while((fscanf((fp, "%[^\n]", c)) != EOF)
    printf("%c \n", c);

    if(a=c)
    {
    printf("ok");
    }

    fclose(fp);
    return 0;
    }

  3. #3

    Padrão

    char a = sei;

    vai dar erro

    tenta assim:

    char a = strcpy("sei", a);

  4. #4
    cassiomarques
    Visitante

    Padrão

    Citação Postado originalmente por alexandrecorrea Ver Post
    char a = sei;

    vai dar erro

    tenta assim:

    char a = strcpy("sei", a);
    Assim tbm não vai dar certo amigo, para que funcionasse como vc espera, usando strcpy, "a" teria que ser um ponteiro para char, e não simplesmente um char. Afinal de contas, como vc espera armazenar três caracteres onde só cabe um ?

    char* a = strcpy("sei", a);


  5. #5

  6. #6

    Padrão quase la.. :)

    Dei mais uma mexida no programa mais no printf("%c \n", *a); so imprime a letra "o" e da linha diferente. nao teria que imprimir a palavra "orientado"
    alguem poderia dar um help??????????


    obrigado..

    abracos



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

    int main() {
    FILE *arqentrada;
    char linha;
    char *a;

    /* abre o arquivo para leitura */
    arqentrada = fopen("entradas.txt", "r");

    /* se não conseguiu abrir o arquivo */
    if (arqentrada == NULL) {
    printf("Não consegui abrir o arquivo.\n");
    return 0;
    }


    /* lê a linha e copia orientado para *a */
    fseek(arqentrada, 0L, SEEK_SET );
    fscanf(arqentrada, "%c", &linha);
    strcpy(a, "orientado");

    printf("%c \n", *a);

    if (a != &linha){
    printf ("Linha diferente. \n");
    }
    if (a == &linha){
    /* imprime o caracter na tela */
    printf("%c", &linha);
    }

    /* fecha o arquivo */
    fclose(arqentrada);

    return 0;
    }