Ir ao conteúdo
  • Cadastre-se

C Como navegar até determinada linha-coluna para inserir caracteres ao texto


Posts recomendados

Salve meus nobres, venho através desse post tirar uma dúvida que estou tendo a respeito de um algoritmo em C que estou desenvolvendo. Basicamente eu só preciso mover o cursor até a linha 2- coluna 49 e inserir uma quebra de linha \n. Segue abaixo meu código, e a imagens referentes ao arquivo de saída que preciso inserir esta quebra de linha.


=============== CÓDIGO =======================
 

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

int main() {
    FILE *arquivo1 = fopen("arquivo1.txt", "r");
    FILE *arquivo2 = fopen("arquivo2.txt", "w");
    char buffer1[1000];
    char buffer2[1000];
    int encontrou1 = 0;
    int encontrou2 = 0;
    int ignorar1 = 0;
    int ignorar2 = 0;

    if (arquivo1 == NULL || arquivo2 == NULL) {
        printf("Erro ao abrir os arquivos.\n");
        return 1;
    }

    while (fgets(buffer1, 1000, arquivo1) != NULL) {
        if (encontrou1 && strstr(buffer1, "@ffea") != NULL) {
            ignorar1 = 1;
        }
        
        if (encontrou1 && !ignorar1) {
            fprintf(arquivo2,"@FFE0\nFF FF FF FF ");
            (*strchr(buffer1,'\n')) = '\0';
            fputs(buffer1, arquivo2);
            fprintf(arquivo2,"FF FF ");
        }
        
        if (strstr(buffer1, "@ffe4") != NULL) {
            encontrou1 = 1;
        }
        
    }
   
    fseek(arquivo1,0,SEEK_SET);
  
    while (fgets(buffer2, 1000, arquivo1) != NULL) {
        if (encontrou2 && strstr(buffer2, "q") != NULL) {
            ignorar2 = 1;
        }
        if (encontrou2 && !ignorar2) {
            (*strchr(buffer2,'\n')) = '\0';
            fputs(buffer2, arquivo2);
            
        }
        if (strstr(buffer2, "@ffea") != NULL) {
            encontrou2 = 1;
        }
    }
    
    fprintf(arquivo2,"\nq\n");
    
    fclose(arquivo1);
    fclose(arquivo2);

    return 0;
}

 

real.png

ideal.png

  • Amei 1
Link para o comentário
Compartilhar em outros sites

@André T Franco @André T Franco    nesse arquivo que postou não tem nenhum @ffea ne @ffe4 ,  mas parece que você que guardar 16  valores  Hexadecimais e em seguida pular para linha de vaixo ,  então , não entendi , essas condições que você colocou no código  para  que o arquivo2 seja preenchido , mas seja como for após essas condições serem satisfeitas , use um loop for com 16 repetições e escreva os valores pego por fgets e em seguida atualize o contador para mais 16 valores . e indo assim até o final da string buffer1 que terá até 1000 caracteres  .   !

Link para o comentário
Compartilhar em outros sites

@devair1010Boa tarde amigo, obrigado por responder. Perdão kkk, eu só não postei o arquivo1/leitura porque não julguei necessário, só postei o arquivo2 de saída/escrita pelo falo do problema ser somente na saída, mas basicamente o que meu programa faz é ler esse arquivo1 e copiar o conteúdo hexadecimal após essas 2 strings "@ffea" e "@ffe4" e inserindo alguns valores FF entre os valores copiados e um q/n no final. Mais tarde quando tiver no Pc novamente posso mandar uma imagem do arquivo1 pra você entender melhor.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Em 10/01/2024 às 13:43, André T Franco disse:

Basicamente eu só preciso mover o cursor até a linha 2- coluna 49 e inserir uma quebra de linha \n

Como quase sempre os fluxos são tipos agregados-lineares (Overwrite), essa solução consistirá na substituição daquele espaço em branco por um caractere de quebra de linha ('\n') — e não inserção.

 

Olá @André T Franco

— Semelhante o que já foi dito:

Supostamente, essa tua solução ainda não será suficiente, porque a linha recém-definida teria uma soma de strings inferior a 16; essa situação, aparentemente, exige, quando possível, complementar 16 strings por linha, sendo a linha abaixo a fonte dessa complementação: supostamente, após encontrar aquela string de controle, envia-se à saída 16 strings e um quebra de linha (se possível, senão envia o resto).

 

 

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!