TOPIC

Runtime Error, problema no printf.

João Pedro Mariotti asked 1 year ago

Estou tentando fazer o problema, mas meu printf, apesar de mostrar a quantia certa de "a", mostra outro caractere junto. Preciso de ajuda o quanto antes.

include include

int main() { int a,i=0; char A[1]; strcpy(A,"a"); scanf("%d",&a); printf("Feliz Nat"); for(i=1;i<a;i++) printf("%s",A); printf("l!\n"); }

This topic was solved and cannot recieve new replies.

  • Vítor Gomes Chagas replied 1 year ago

    O problema está na declaração da string A. Toda string possui o caractere '\0' no fim, e assim caso você queira que a string A armazene "a" ele precisará armazenar "a\0" e assim precisará de 2 bytes de espaço, ou seja, A[2], e como não foi alocado espaço suficiente , acaba-se acessando lixo e dando runtime error.

    Porém para esse problema, como você quer que A seja igual a apenas um caratere, não há necessidade de ele ser uma string, basta declará-lo como char e igualá-lo ao caractere 'a', ou seja:

    char A = 'a';

    E para printar o valor de A, deve-se usar o especificador %c

    printf("%c", A);

    E também se quiser nem precisa usar a variável A, pode-se imprimir uma string diretamente com printf

    printf("a");

    E finalmente, deve-se atentar que no laço são feitas na verdade apenas a-1 iterações em vez de a.