Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

sprintf

Ola, eu não entendi muito bem a funcionalidade da função sprintf, na última aula foi dito que é usada para armazenar uma string em uma variável. Ex: char palavra[50]; sprintf(palavra,"MELANCIA");

Seria isso mesmo? Se for por que nao simplesmente fazer: char palavra[50] = "MELANCIA"; // ?

4 respostas

Oi Guilherme,

A função faz isso mesmo que você comentou. Não é feito do jeito que você sugeriu porque infelizmente não é possível. O array palavra[50] apenas junta vários espaços da memória, nesse caso, cada um desses vários espaços pode ter um char. Mas, pra acessar algum espaço específico, precisamos acessar informando o indíce dele, por exemplo: palavra[0].

Então, para colocar a palavra "MELANCIA" sem a funçao sprintf, é preciso fazer da seguinte maneira:

char palavra[50];

palavra[0] = 'M';
palavra[1] = 'E';
palavra[2] = 'L';
palavra[3] = 'A';
palavra[4] = 'N';
palavra[5] = 'C';
palavra[6] = 'I';
palavra[7] = 'A';

Ficou mais claro? :)

É que na verdade eu fiz da maneira que tinha falado e funcionou... Tipo assim mesmo:

#include <stdio.h>
int main()
{
    char palavra[50]="MELANCIA";
    printf("%s",palavra);
}
solução!

Oi Guilherme, desculpa pela demora em responder.

Eu não lembrava que desse jeito funciona também. Então nesse caso, com a palavra "MELANCIA", realmente não faz diferença fazer de um jeito ou de outro.

A função sprintf é mais vantajosa quando vamos atribuir textos mais complexos e formatados à variável, por exemplo, textos que podem variar. A seguir um caso de uso da função sprintf:

char palavra[50];
char nome[50] = "Ana";

sprintf(palavra,"Meu nome é %s", nome );
printf("%s",palavra); // vai imprimir 'Meu nome é Ana'

Desculpa a confusão na resposta anterior. Ficou mais clara a utilidade do sprintf?

Ta tranquilo, obrigado :)