Arrays 在c中的数组中添加带有循环的元素的问题

Arrays 在c中的数组中添加带有循环的元素的问题,arrays,c,pointers,Arrays,C,Pointers,我的目标是将每个单词从字符串中分离出来,并将分离出来的单词存储在数组中。 一切似乎都很顺利,但最后一张桌子上只摆满了最后一句话,我不明白为什么 请在下面找到我的代码: enum {TAILLE_BUFFER = 100}; char la_commande[TAILLE_BUFFER]; char* tableauArguments[TAILLE_BUFFER]; char* espace = " "; printf("Rentrez la commande

我的目标是将每个单词从字符串中分离出来,并将分离出来的单词存储在数组中。 一切似乎都很顺利,但最后一张桌子上只摆满了最后一句话,我不明白为什么

请在下面找到我的代码:

enum {TAILLE_BUFFER = 100};

char  la_commande[TAILLE_BUFFER];
char* tableauArguments[TAILLE_BUFFER];
char* espace = " ";

printf("Rentrez la commande à executer avec ses arguments\n");
scanf("%[^\n]s", la_commande);
printf("%s\n", la_commande); 

int cpt = 0;
int dernier_espace = 0;
int lenTab = 0;

for(int i = 0; i < TAILLE_BUFFER; i++)
{
  if( (int)la_commande[i] == 0 ){
    break;
  }

  lenTab++;
}

for(int cpt1 = 0; cpt1 < lenTab + 2; cpt1++)
{
  int taille = cpt1 - dernier_espace;
  char le_mot[taille];
  
  if(la_commande[cpt1] == 32 )
  {
    for(int i = 0; i < taille; i++)
    {
      le_mot[i] = la_commande[i + dernier_espace];
    }

    printf("test1 :  %s %d\n", le_mot, cpt);
      
    tableauArguments[cpt] = le_mot;
    printf("test2 %s\n", tableauArguments[cpt]);

    dernier_espace = cpt1;
    cpt++;
  } 
}  

for(int cp1 = 0; cp1 < 5; cp1++)
{
  printf("\nLecture du tableau  : %s numero : %d", tableauArguments[cp1], cp1);
}
enum{TAILLE_BUFFER=100};
char la_commande[TAILLE_BUFFER];
char*tableauArguments[TAILLE_BUFFER];
char*espace=“”;
printf(“Rentrez la commandeáexecuter avec ses arguments\n”);
scanf(“%[^\n]s”,la_commande);
printf(“%s\n”,la_command);
int-cpt=0;
int-dernier_-espace=0;
int lenTab=0;
对于(int i=0;i
你不能这样做:
表格参数[cpt]=leu-mot因为您没有为
表格参数[TAILLE\u BUFFER]
双数组分配内存位置。即使进行分配,也必须使用“strcpy()”功能将字符串数组的内容复制到另一个字符串数组。 工作代码可能如下所示:

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


int main(){
    char la_commande[100];
    char tableauArguments[100][100];
    char* espace = " ";
    printf("Rentrez la commande à executer avec ses arguments\n");
    scanf("%[^\n]s",la_commande);
    printf("%s\n",la_commande); 
    int cpt = 0;
    int dernier_espace = 0;
    
    int lenTab= 0;
    for(int i = 0; i < 100; i++)
    {
    if((int)la_commande[i] == 0){
      break;
    }
    lenTab++;
    }

    for(int cpt1 = 0; cpt1 < lenTab+2; cpt1++) {
        int taille = cpt1 - dernier_espace;
        char le_mot[taille];
        if(la_commande[cpt1] == 32 )
        {
            for(int i = 0; i < taille;i++){
                le_mot[i] = la_commande[i+dernier_espace];
            }
            
            printf("test1 :  %s %d\n",le_mot,cpt);
            
            strcpy(tableauArguments[cpt], le_mot);
            
            printf("test2 %s\n",tableauArguments[cpt]);
            dernier_espace = cpt1;
            cpt++;
        }
    }  
    for(int cp1 = 0; cp1 < 5;cp1++){
        printf("\nLecture du tableau  : %s numero : %d", tableauArguments[cp1], cp1);
    }
}
#包括
#包括
#包括
int main(){
char la_commande[100];
char tableauArguments[100][100];
char*espace=“”;
printf(“Rentrez la commandeáexecuter avec ses arguments\n”);
scanf(“%[^\n]s”,la_commande);
printf(“%s\n”,la_command);
int-cpt=0;
int-dernier_-espace=0;
int lenTab=0;
对于(int i=0;i<100;i++)
{
如果((int)la_命令[i]==0){
打破
}
lenTab++;
}
for(int-cpt1=0;cpt1
此代码不可编译。修正a并更精确地描述预期和实际输出。显示一些示例输入和输出内存在循环开始时保留,然后在同一循环结束时释放。我要求用户输入一个句子,我希望程序在表中分隔该句子的单词。输入:“hello world!”输出预期:tab[0]“hello”tab[1]“world”tab[2]“!“输出实际:tab[0]!“tab[1]”!“tab[2]!”@Damien,是的,因为我试图将le_mot的值放入数组TableArguments中,除此之外我不知道如何做