char数组的值更改为第二个迭代值,我希望它是独立的

时间:2013-02-13 04:56:41

标签: c

我的印象是,在每次运行中,在我的Strings数组中,我在pos中存储一个新的str,因为我每次都声明它,而是在第二次运行时如果addstr成为你好,并且在第一次运行它嗨,第一次运行喜也成为你好。我只想在Strings的每次运行中使用不同的char数组,所以稍后在每个位置我都有不同的字符串。要求是我不能使用malloc,realloc,calloc。我真的认为在第一个for循环的第二次迭代中,我在一个独立于前一个的char str上创建。请帮帮我。

int pos = 0;
for(i=0; i<4; i++)
{
   if(file [i]=='a')
   {
      char str[5];
      int b=0;
      for(b; b<3; bi++)
      {
         str[b]=file[b];
      }
      Strings[pos]=str;
      pos++;
   }
}

1 个答案:

答案 0 :(得分:0)

执行此操作时:

Strings[pos]=str;

它只是将该数组元素设置为'str'指向的缓冲区。它不会复制字符串。 'str'缓冲区永远不会改变,因此整个数组最终指向同一个缓冲区。

相反,在那一行你需要复制字符串。如果你不能使用malloc,那么你的Strings数组需要在每个数组元素(也就是2维数组)上有缓冲区。也许宣布它是这样的:

char Strings[5][5];

然后将字符串复制到'strings [pos]'而不是使用strcpy复制到'str';