Exercício da aula #16 #27

Open
opened 2025-06-20 21:56:30 -03:00 by NRZCode · 0 comments

Elaborar um programa em C que leia e imprima de um arquivo o número da linha e a quantidade de bytes lidos.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
    // 5 minutos para elaborar um plano de ação
    // ter plano de ação definido
    // escrever apenas comentários nos próximos 5 minutos
    // depois, vamos escrever a primeira linha de código, já decidida
    // ler qualquer arquivo e imprimir linha (número da linha) e quantidade de bytes.
    // E assim para todas as linhas do arquivo.
    //
    // Receber arquivo como argumento
    if (argc < 2) {
        fprintf(stderr, "Número inválido de argumentos!");
        return EXIT_FAILURE;
    }
    // abrir o arquivo em modo leitura
    FILE *file = fopen(argv[1], "r");

    // testar se o arquivo foi aberto com sucesso
    if (!file) {
        perror(argv[1]);
        return EXIT_FAILURE;
    }

    // loop para ler as linhas desse arquivo
    char buffer[BUFSIZ];
    long prev = 0;
    long cur = 0;
    long bytes = 0;
    int line = 0;
    while (fgets(buffer, BUFSIZ, file) != NULL) {
        line++;
        cur = ftell(file);
        bytes = cur - prev;
        prev = cur;
        // imprimir o número da linha com um contador
        // imprimir a quantidade de bytes da linha
        printf("%d: %ld\n", line, bytes);
    }
    fclose(file);
    return EXIT_SUCCESS;
}
Elaborar um programa em C que leia e imprima de um arquivo o número da linha e a quantidade de bytes lidos. ```c #include <stdio.h> #include <stdlib.h> int main(int argc, char **argv) { // 5 minutos para elaborar um plano de ação // ter plano de ação definido // escrever apenas comentários nos próximos 5 minutos // depois, vamos escrever a primeira linha de código, já decidida // ler qualquer arquivo e imprimir linha (número da linha) e quantidade de bytes. // E assim para todas as linhas do arquivo. // // Receber arquivo como argumento if (argc < 2) { fprintf(stderr, "Número inválido de argumentos!"); return EXIT_FAILURE; } // abrir o arquivo em modo leitura FILE *file = fopen(argv[1], "r"); // testar se o arquivo foi aberto com sucesso if (!file) { perror(argv[1]); return EXIT_FAILURE; } // loop para ler as linhas desse arquivo char buffer[BUFSIZ]; long prev = 0; long cur = 0; long bytes = 0; int line = 0; while (fgets(buffer, BUFSIZ, file) != NULL) { line++; cur = ftell(file); bytes = cur - prev; prev = cur; // imprimir o número da linha com um contador // imprimir a quantidade de bytes da linha printf("%d: %ld\n", line, bytes); } fclose(file); return EXIT_SUCCESS; } ```
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: blau_araujo/cblc#27
No description provided.