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 .
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);
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);
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;
}
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