web-dev-qa-db-fra.com

Comment créer une variable de type chaîne en C

Question

Comment déclarer une variable chaîne en C?

Contexte

Dans ma quête pour apprendre les bases de c , j'essaie de porter l'un de mes plus anciens python programmes, Bob, vers C. Dans le programme, le script demande à l'utilisateur des informations sur lui-même, puis crache des réponses. Presque toutes ces variables utilisent raw_input pour leur information - les variables sont des chaînes. Mais, je n'ai trouvé aucun moyen de déclarer des variables C.

Code

Jusqu'à présent, j'ai essayé de déclarer la variable de type char et int. Voici le code, changez de type à votre guise.

int main(int argc, const char * argv[])
{

    int name;
    printf("What is your name?");
    scanf("%s",&name);
    printf("Your name is %s", name );

    return 0;
}

Message d'erreur

Lorsque j'exécute ce code, Xcode renvoie des trucs bizarres. Cette partie du globidty-gloop est mise en valeur.

0x7fff96d2b4f0:  pcmpeqb(%rdi), %xmm0

Enfin, cette réponse Yahoo a dit que je devais utiliser quelque chose appelé character array. Il a été publié il y a 5 ans, j'ai donc supposé qu'il y avait une meilleure façon.

[~ # ~] modifier [~ # ~]

Je suis le tutoriel sur Programmation C .

8
xxmbabanexx
char name[60];
scanf("%s", name);

Modifier: longueur d'entrée limitée à 59 caractères (plus la fin de 0):

char name[60];
scanf("%59s", name);
5
Valeri Atamaniouk

En C, vous ne pouvez pas directement déclarer une variable chaîne comme Java et autre langage. Vous devrez utiliser un tableau de caractères ou un pointeur pour déclarer des chaînes.

char a[50];
printf("Enter your string");
gets(a);

OR

char *a;
printf("Enter your string here");
gets(a);

OR

char a[60];
scanf("%59s",a);
2
Tushar Gaurav

L'int de votre put n'est pas une chaîne, une chaîne ressemble à "char myString [20]". Pas comme "int name", c'est un entier et non une chaîne ou un caractère. Voici le code que vous souhaitez:

         int main(int argc, const char * argv[])
{

char name[9999];
printf("What is your name?\n");
scanf("%s", name);
system("cls");
printf("Your name is %s", name);

return 0;
}
2

TESTÉ SUR XCODE

Vous pouvez le faire:

int main(int argc, const char * argv[])
{

    int i;
    char name[60]; //array, every cell contains a character

    //But here initialize your array

    printf("What is your name?\n");
    fgets(name, sizeof(name), stdin);
    printf("Your name is %s", name );

    return 0;
}

Initialiser le tableau, c'est bon pour éviter les bugs

for(i=0;i<60;i++){
      name[i]='\0'; //null
}

À la place, int est utilisé pour le nombre entier (1, 2, 3, etc.); Pour le nombre à virgule flottante à la place, vous devez utiliser float

1
Mitro