#include "stdafx.h"
#include <stdlib.h>
#include <conio.h>
#include<cctype>
#include<iostream>
#include <cstdlib>
#include <windows.h>
#include<iterator>
#include<fstream>
#include<string>
#include<vector>
#include<cctype>
#include"ctype.h"
#include <windows.h>
#include <stdio.h>
#include <time.h>
using namespace std;int main(int argc, char* argv[])
{char l[2][10];
for(int i=0;i<10;i++)
{l[0][i]=32;
cout<<l[0];}
return 0;
}
这是一段程序 我的目的是吧二位数组l的第一行赋值为空格 32是空格的阿斯科码
然后吧第一行l[0]输出~ 但是如果大家运行代码会发现出来一堆烫 而且最最神奇的是我明明只有给第一行10个元素结果 输出地何止10个。
请问就在这段小程序上修改请问怎么才能把第一行 第二行完美的赋值为空格并且屏幕上输出呢?

解决方案 »

  1.   

    char l[2][10] = { 0 };
      

  2.   

    char l[2][10] = {0};
    for(int i=0;i<10;i++)
    {
    l[0][i]=32;
    cout<<l[0];
    }
      

  3.   

    int main(int argc, char* argv[])
    {
        char l[2][10];
        for(int i=0;i<10;i++)
        {l[0][i]=32;
         l[0][10] = '\0'
         cout<<l[0];}
        return 0;
    }
      

  4.   

    上面加那句忘记加“;”
    ,不好意思
    int main(int argc, char* argv[])
    {
      char l[2][10];
      l[0][10] = '\0';    //放这儿也可以
      for(int i=0;i<10;i++)
      {l[0][i]=32;
      cout<<l[0];}
      return 0;
    }
      

  5.   


    不对l初始化,这段代码将输出10次烫
    for(int i=0;i<10;i++)
    {l[0][i]=32;
    cout<<l[0];}首先应在申明变量的时候初始化为0
    char l[2][10] = {0};再就是应该先对第一行赋空格,然后再输出
    for(int i=0;i<9;i++)  // 第一行最后一个元素应保留0不作处理,作为字符串结束符。
       l[0][i]=32;cout<<l[0];
      

  6.   

    #include <iostream>
    using namespace std;int main(int argc, char* argv[])
    {char l[2][10]={0};
    for(int i=0;i<10;i++)
    {
    l[0][i]=32;
    }
    cout<<l[0];
    return 0;
    }
    还是加我的群吧110337996
      

  7.   

    # include<iostream>
    using namespace std;
    int main()
    {
    char I[2][10];
    for(int i=0;i<10;i++)
            I[0][i]=' ';
    for(int j=0;j<10;j++)
    cout<<I[0][j];
    return 0;
    }
    直接再来个循环输出就得了!
    你用cout<<I[0];这是什么意思?这是输出字符串!因为你第一行最后没'\0',编译器怎么知道你何时结束??当然出现好多“烫”了,要不循环输出,要不在第一行最后一个后面赋'\0',然后cout<<I[0];