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

时间:2014-03-27 02:06:25

标签: c arrays

您好我正在尝试创建一个仅包含下划线和空格的char数组。函数游戏接受一个char数组并创建一个新数组,所有字符都转换为下划线和空格,例如Stack将是_ _ _ _ _。

它确实起作用我得到了所有的下划线但是我得到随机字符在数组末尾尾随我是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] = ' ';
     }
 }

4 个答案:

答案 0 :(得分:3)

替换:

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

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

通过:

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

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

因为所有字符串都需要以字符&#39; \ 0&#39;结束,所以它是一种约定。它有什么作用?允许开发人员知道字符串的结束位置。

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

答案 1 :(得分:1)

始终使用'\ 0'或0x00字符终止字符串,这是识别字符串结尾的常规(strlen,printf等,需要它)。

答案 2 :(得分:1)

字符数组必须包含NULL字符&#39; \ 0&#39;最后。

答案 3 :(得分:1)

我不太了解你的目的,但我认为问题是关于'\ 0'