web-dev-qa-db-fra.com

Stocker une chaîne dans un tableau en c

Comme je le sais, je peux créer un tableau avec un élément à l'intérieur tel que:

char *test1[3]= {"arrtest","ao", "123"};

mais comment puis-je stocker mon entrée dans tableau comme le code ci-dessus parce que je ne peux que le coder comme 

input[10];
scanf("%s",&input) or gets(input);

et il stocke chaque personnage dans chaque espace.

Comment puis-je stocker l'entrée "BONJOUR" telle qu'elle enregistre dans l'entrée [0]

H pour saisir [0], E pour saisir [1], etc.

6
MoonScythe

Vous avez besoin d'un tableau de caractères à 2 dimensions pour avoir un tableau de chaînes:

#include <stdio.h>

int main()
{
    char strings[3][256];
    scanf("%s %s %s", strings[0], strings[1], strings[2]);
    printf("%s\n%s\n%s\n", strings[0], strings[1], strings[2]);
}
5
cybermage14

Utilisez un tableau à 2 dimensions char input[3][10];
ou
un tableau de pointeurs char (comme char *input[3];) qui doivent être alloués de manière dynamique à la mémoire avant que toute valeur soit enregistrée à ces emplacements.

Premier cas, prenez les valeurs d'entrée en tant que scanf("%s", input[0]);, de même pour input[1] et input[2]. N'oubliez pas que vous pouvez stocker une chaîne de taille maximale 10 (y compris le caractère '\0') dans chaque input[i].

Dans le second cas, entrez les données de la même manière que ci-dessus, mais allouez de la mémoire à chaque pointeur input[i] en utilisant malloc avant. Ici, vous avez la flexibilité de la taille pour chaque chaîne.

2

essayez ci-dessous le code: 

char *input[10];
input[0]=(char*)malloc(25);//mention  the size you need..
scanf("%s",input[0]);
printf("%s",input[0]);
0
dead programmer

Ce code m'a inspiré sur la façon d'obtenir mes chaînes d'entrée utilisateur dans un tableau. Je suis nouvelle dans C et dans ce forum, je m'excuse si je ne respecte pas certaines règles pour publier un commentaire. J'essaie de comprendre les choses. 

#include <stdio.h>

int main()

{

char strings[3][256];

scanf("%s %s %s", strings[0], strings[1], strings[2]);

printf("%s\n%s\n%s\n", strings[0], strings[1], strings[2]);

}
0
angelita
int main()
{

int n,j;
cin>>n;
char a[100][100];
for(int i=1;i<=n;i++){
    j=1;
    while(a[i][j]!=EOF){
        a[i][j]=getchar();
        j++;
    }
}
0
Kshitij Patidar

Je n'ai pas vraiment compris ce dont tu as besoin. Mais voici ce que j'ai deviné.

char *a[5];//array of five pointers

for(i=0;i<5;i++)// iterate the number of pointer times in the array
{
char input[10];// a local array variable
a[i]=malloc(10*sizeof(char)); //allocate memory for each pointer in the array here
scanf("%s",input);//take the input from stdin
strcpy(a[i],input);//store the value in one of the pointer in the pointer array
}
0
Vijay