logo

Diferença entre printf() e scanf() em C

Introdução:

Imprimirf() e Scanf() são funções de biblioteca embutidas na linguagem C que executam entrada formatada e saída formatada funções. Essas funções são definidas e declaradas em arquivo de cabeçalho stdio.h . O 'f' em imprimir e scanf apoia 'formatado' . Então, ambas as funções imprimirf() e scanf() use códigos dentro de uma string de formato para especificar como os valores de saída ou entrada devem ser formatados. Precisamos importar o arquivo de cabeçalho para usar imprimirf() e scanf() :

 #include 

Neste artigo, discutiremos sobre a diferença entre printf() e scanf(), mas antes de discutir as diferenças, devemos saber sobre printf() e scanf() com sua sintaxe e exemplos.

Imprimirf():

Isto estampas qualquer coisa entre aspas duplas com especificadores de formato %c, %d,%f, etc., para mostrar o valor de uma variável ou constante e também pode ter caracteres de sequência de escape como , para nova linha, e guia horizontal , respectivamente.

renomear uma pasta linux

Sintaxe:

 printf('(string) %format_specifier (string)',variable); 

Scanf():

Permite ler um ou vários valores inseridos pelo usuário através do teclado do console. Podemos colocar quantos especificadores de formato quantas entradas quisermos com ou sem formato.

Sintaxe:

 scanf(%format_specifier, &pointer_to_variable); 

String do especificador de formato:

No primeiro parâmetro de imprimir e scanf , nós passamos sequência de formato ou string do especificador de formato e especificamos que tipo de valor o usuário irá inserir.

Tipo de dados Conversão sequência de formato
Inteiro Inteiro curto %d ou %i
curto não assinado % em
assinado há muito tempo % ld
há muito tempo sem assinatura % Lu
hexadecimal sem sinal % x
octal sem sinal %O
Real flutuador % f ou % g
dobro %se
caractere assinado %c
caracter não identifcado %c
corda %s

Por exemplo, se um usuário inserir vinte como entrada, como vinte é um valor inteiro decimal , especificamos todos os valores inteiros decimais em C usando o %d especificador de formato . De forma similar, valores flutuantes são especificados usando %f .

Código Básico para Printf() e Scanf():

Exemplo 1:

 #include int main() { int a, b; int sum = 0, sub = 0, mul = 0; printf('Please enter the two values:'); /* Read input */ scanf('%d%d', &a, &b); sum = a+b; sub = a-b; mul = a*b; /* Print output */ printf('The sum = %d 
sub = %d 
mul = %d', sum, sub, mul); return 0; } 

Saída:

 Please enter the two values:8 6 The sum = 14 sub = 2 mul = 48 

Explicação:

No programa acima, estamos usando o scanf() para ler a entrada do console e armazená-la em variáveis a e b. Depois disso, realizamos operações aritméticas como Adição , subtração , e multiplicação e posteriormente armazenar os resultados no três novas variáveis ​​(Sum, Sub, Mul). Finalmente, usando o função printf() , estamos imprimindo os resultados.

Exemplo 2: -

 #include int main() { int a; scanf('%d %d', &a); printf('Execution finished...'); return 0; } 

No programa acima, scanf() lê duas entradas do programa mesmo que estejamos passando uma variável porque especificamos dois especificadores de formato . Lembre-se sempre, em scanf()/printf() todos especificadores de formato que passamos deve ser o mesmo, caso contrário, poderemos obter alguns erros inesperados de tempo de execução.

Exemplo 3:

 int main() { int a, b; scanf('%d', &a, &b); printf('Execution finished...'); return 0; } 

Saída:

inserir no teclado
 5 Execution finished... 

Explicação:

No programa acima, scanf() lê apenas uma entrada do usuário porque especificamos apenas um especificador de formato . Portanto, a partir deste exemplo, concluímos que nenhuma das entradas será tomada dependendo do número de especificadores de formato .

Exemplo 4:

 #include int main() { int a; scanf('%d', a); printf('Execution finished'); } 

Saída:

 6 Segmentation fault 

Explicação:

No programa acima, estamos passando o valor de uma variável para scanf() em vez do endereço da variável. Isso levará a um erro em tempo de execução . No Linux, obteremos um erro de falha de segmentação.

rede neural artificial

Exemplo 5:

 #include int main() { int a = 10; int b = 20; printf('the value of a = %d, the value of b = %d', a, b); } 

Saída:

 the value of a = 10, the value of b = 20 

Explicação:

No programa acima, quando imprimir verifica a string de formato, ela substituirá o especificadores de formato (%d) com os valores reais que passamos para imprimirf() . ou seja, o primeiro especificador de formato será substituído pelo primeiro valor que passamos imprimirf(), e assim por diante.

Diferenças básicas entre Printf() e Scanf()

Algumas diferenças entre printf e scanf são: -

    função printf() envia dados para a saída padrão, ou seja, para o console. Em contrapartida, o função scanf() lê dados da entrada padrão, ou seja, dispositivos de entrada imprimirf() raramente usa ponteiro em alguns casos, mas scanf() sempre usa um ponteiro para atribuir valor à variável fornecida. imprimirf() e scanf() ambos têm o mesmo tipo de retorno de inteiro . O imprimirf() retorna o número de caracteres impressos com sucesso no console, enquanto scanf() retorna 0,1 ou EOF com base no especificador de formato fornecido.