Programa nome com condição logica não compila

Quero fazer um programa semelhante a esse debaixo,só que não compila:

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

int main (){

    char nome[50],sobrenome[50],nomecompleto[100];
    
    printf("\n Digite o seu nome:\t");
    scanf("%c",&nome);
    printf("\n Digite o seu sobrenome\t");
    scanf("%c",&sobrenome);
    nomecompleto=(nome+sobrenome);
	
	if(nomecompleto=João Santos Vieira Junior) {
		printf("\n Você é o cara!");
	}else {
		printf("\n Você não é o cara!");
	}
	
	
	

	
	return 0;
}

E qual é a mensagem de erro do compilador?

Não é assim que se concatena String em C, tem que usar a função strcat.

  • O operador = é para fazer atribuição;
  • Para comparar String tem que usar a função strcmp;
  • João Santos Vieira Junior não é um literal string válido.
#include <stdio.h>
#include <string.h>

int main (){
    char nome[50], sobrenome[50], nomecompleto[100];
    
    printf("\nDigite o seu nome: ");
    scanf("%s", nome);
    
    printf("\nDigite o seu sobrenome: ");
    scanf("%s", sobrenome);
    
    strcat(nomecompleto, nome);
    strcat(nomecompleto, " ");
    strcat(nomecompleto, sobrenome);
    
    if(strcmp(nomecompleto, "João Santos Vieira Junior") == 0) {
        printf("\nVocê é o cara!");
    } else {
        printf("\nVocê não é o cara!");
    }
    
    return 0;
}

Programa não imprimi você é o cara!.

Como faço para imprimir você é o cara no programa quando eu digitar o meu nome João Santos Vieira Junior?

Imprime o valor da variável nomecompleto entre aspas pra ver o conteúdo dela, aí vai descobrir porque a comparação não passa.

Não entendi.

1 curtida

Antes do if, imprime o valor da variável nomecompleto.

Aí você vai ver qual é o conteúdo dela e vai entender o motivo de não estar entrando no seu if.

De novo não entendi o que tu disse,mas um amigo meu de outro fórum fez o programa como eu queria,e ficou assim:

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

int main() {
    char nome[100], sobrenome[100];
    
    printf("Digite seu nome: ");
    fgets(nome, 100, stdin);
    printf("Digite seu sobrenome: ");
    fgets(sobrenome, 100, stdin);
    
    // Verifica se o nome é "João" e se o sobrenome completo contém "Santos Vieira Junior"
    if (strcmp(nome, "João\n") == 0 && strstr(sobrenome, "Santos Vieira Junior") != NULL) {
        printf("Você é o cara!\n");
    } else {
        printf("Você não é o cara!\n");
    }
    
    return 0;
}

Só pedi pra você imprimir a variável nomecompleto antes do seu if.

1 curtida