随机尾随字符在C中打印字符串

随机尾随字符在C中打印字符串,c,arrays,C,Arrays,您好,我正在尝试创建一个仅由下划线和空格组成的字符数组。该函数游戏接受一个字符数组,并创建一个新数组,其中所有字符都转换为下划线和空格,例如堆栈将为 它在某种程度上确实有效,我得到了所有的下划线,但我得到了数组末尾的随机字符。我是c新手,所以如果有人能看到我哪里出错了,我将不胜感激 int game(char p[]) { int length = strlen(p); int newLength = length * 2; newLength = newLength +1; char di

您好,我正在尝试创建一个仅由下划线和空格组成的字符数组。该函数游戏接受一个字符数组,并创建一个新数组,其中所有字符都转换为下划线和空格,例如堆栈将为

它在某种程度上确实有效,我得到了所有的下划线,但我得到了数组末尾的随机字符。我是c新手,所以如果有人能看到我哪里出错了,我将不胜感激

 int game(char p[])
{
int length = strlen(p);

int newLength = length * 2;
newLength = newLength +1;
char display[newLength];
InitializeArray(display,newLength);

for(int i = 0;i<=length-1;i++)
{

    if(p[i]==' ')
    {

        display[i*2]=' ';
    }
    else
    {
        display[i*2] = '_';
    }


}
}



int InitializeArray(char Array[], int Length)
{
   int i;

   for (i = 0; i < Length-1; i++) 
     {
      printf("%i",i);
      Array[i] = ' ';
     }
 }

始终使用“\0”或0x00字符终止字符串,这是标识字符串strlen、printf等结尾的约定,需要它。

始终使用“\0”或0x00字符终止字符串,这是标识字符串strlen、printf等结尾的约定,需要它。

字符数组的结尾必须有空字符“\0”。

字符数组的结尾必须有空字符“\0”。

替换:

int InitializeArray(char Array[], int Length)
{
   int i;

   for (i = 0; i < Length-1; i++) 
     {
      printf("%i",i);
      Array[i] = ' ';
     }
 }
作者:

因为所有字符串都需要以字符“\0”结尾,所以这是一种约定。它存在什么?允许开发人员知道字符串的结束位置

如果您需要更多信息,欢迎使用:

替换:

int InitializeArray(char Array[], int Length)
{
   int i;

   for (i = 0; i < Length-1; i++) 
     {
      printf("%i",i);
      Array[i] = ' ';
     }
 }
作者:

因为所有字符串都需要以字符“\0”结尾,所以这是一种约定。它存在什么?允许开发人员知道字符串的结束位置


如果您需要更多信息,欢迎使用:

我不太了解您的目的,但我认为问题是关于“\0”

我不太了解您的目的,但我认为问题是关于“\0”

我不确定两个函数的长度是否相同,但是很明显,for的条件是differentine,我不确定你的两个函数的长度是否相同,但是很明显,for的条件是differentine