scanf输入字符串问题

来源:互联网 发布:java web视频点播系统 编辑:程序博客网 时间:2024/06/05 07:11

1、

#include"stdio.h"

#include"iostream"
using namespace std;
int main()

{

    char a[4]={'l','o','v','\0'};
    printf("%s",a);

    system("PAUSE");

    return 0;

}



2、

#include"stdio.h"
#include"iostream"
using namespace std;
int main()

{

    char a[4]={'l','o','v','e'};
    printf("%s",a);

    system("PAUSE");

    return 0;

}//而用for循环控制的输出则是正常的。



3、#include"stdio.h"
#include"iostream"
using namespace std;
int main()
{
char a[10];
   scanf("%s",a);
   printf("%s",a);
   system("PAUSE");
   return 0;
}

当scanf中间出现空格时,输出发生字符串截断,后面无论多少字符不再计入;

当输入十个(要求写入‘/0’)或更多的字符时,发生溢出;

当输入十个以下字符时,正常结束。

若定义为char *a,则显示a未初始化错误;

若定义为char *a为NULL(企图写地址0,这个地址在进程的地址空间是被操作系统使用的,应用程序不得非法入侵)或为“”(只读区域),则都会显示异常。



参考:http://bbs.csdn.net/topics/390284078

0 0
原创粉丝点击