0
votes

Comment donner une entrée de matrice pour si la déclaration en C?

# include <stdio.h>


void danidev(void){
 printf("Dani is a YouTuber and an indie game developer and an fps game developer having his game published in play store he is 22 years old and goes to a university");
}

void brackeys(void){
    printf("brackeys is a YouTuber and an indie game developer and also an fps game developer having most of his games published in itch.io and has a team which works on game development");
}

void blackthornprod(void){
    printf("  they are two brothers who create video games and teach others how to do the same over on Youtube and Udemy ! they are passionate in sharing their knowledge and game creation journey with other aspiring game developers.");
}

void jabrils(void){
 printf("jabrils is a ai programmer and also a machine learning pro coder and also a game developer he has made a lot of ai and has saved millions of people from their tough times");
}

void codingbullet(void){
 printf("coding bullet is a multi intelligent ai developer and also a master in machine learning also he owns a youtube channel with 2.06 million subscribers");
}

int main(){

 printf("HERE IS THE INFORMATION OF FAMOUS CODING YOUTUBERS(PLS TYPE THE FOLLWOING YOUTUBERS NAME): ");
 char b;
 scanf("%c",&b);
 if(b=='danidev'){
 danidev(); 
 }
 else if(b=='brackeys'){
 brackeys();
 }
 else if(b=='blackthornprod'){
 blackthornprod();
 }
 else if(b=='jabrils'){
 jabrils();
 }
 else if(b=='codingbullet'){
 codingbullet();
 }
 else{
 printf(" i dont know what you are taking about");
 }

return 0;
}
I have a problem when I enter a YouTubers name ( complete name) as an input  I get a problem that the constant is too long and does not give the proper result and also it says the constant character is too long for its type

4 commentaires

Utilisez des guillemets doubles "" pour créer des littéraux de chaîne, pas des citations simples. Créez un char tableau pour stocker les résultats de votre scanf et d'utiliser % s pour lire une chaîne plutôt que % c pour lire un seul caractère.


Merci, chrétiens gibbons pour votre aide


Je vous suggère de travailler votre chemin à travers un cours de programmation du début C. Il y a beaucoup de libres en ligne.


Bonjour Bob Jarvis, j'ai récemment commencé à apprendre C et je suis un enfant de 12 ans (comment est intelligent) j'apprends c par moi-même à Eductive.io @bob Jarvis - Réintégrer Monica


3 Réponses :


1
votes

Vous devez attribuer plus d'espace pour l'entrée. Le type Char CODE> ne peut contenir qu'un seul caractère. Vous avez besoin d'un tableau de Char code> s. Cela peut être déclaré comme suit:

char b[30];


0 commentaires

0
votes

Vous ne pouvez pas comparer directement les chaînes à l'aide de l'opérateur d'égalité (==). Au lieu de cela, utilisez STRCMP () pour comparer deux chaînes.

char str[20];
gets(str);

if(!strcmp(str, "danidev") danidev();  //Use double quotes for strings, instead of single quotes (used for character literal).
//Same as strcmp(str, "danidev") == 0
//rest of the code


0 commentaires

0
votes

Il y a quelques erreurs, de la comparaison des chaînes, de la définition de la chaîne et des variables de tableau de caractères. Cela ressemble parfois à JS, mais prenez soin des grandes différences. À côté de cela, j'ai vu une autre réponse a été ajoutée pendant que j'éclurais celui-ci, je souhaite ajouter à la charge de la matrice de Scanf afin de ne pas élever une erreur de débordement tampon au moment de l'exécution.

Vous pouvez Vérifiez-le ici: https://onlinegdb.com/hyrgvk-sl p>

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

void danidev (void)
{
  printf ("Dani is a YouTuber and an indie game developer and an fps game developer having his game published in play store he is 22 years old and goes to a university");
}

int main ()
{

    printf("HERE IS THE INFORMATION OF FAMOUS CODING YOUTUBERS(PLS TYPE THE FOLLWOING YOUTUBERS NAME): ");
    char b[32];
    scanf("%31s", b);

    if (strncmp(b,"danidev", 32)== 0) 
    {
        danidev ();
    }
    else
    {
        printf (" i dont know what you are taking about");
    }
    return 0;
}


2 commentaires

salut pouvez-vous s'il vous plaît expliquer sur si (strncmp (b, "danidev", 32) == 0) ce qu'il fait et comment s'il vous plaît


Bien sûr, STRNCMP fait une chaîne comparer. En C une chaîne est une gamme de caractères terminés par un caractère null. L'extra n est pour la longueur maximale des cordes, de sorte que vous n'allez jamais dans un endroit interdit. Dans ce cas particulier, vous pouvez également utiliser STRCMP car la deuxième chaîne est plus petite puis 32 et elle prend fin en premier, mais je pense que c'est une bonne habitude d'utiliser STRNCMP.