为什么我能将多个字符放入char类型的变量中?

时间:2014-02-10 11:14:37

标签: c char

我是C的新手,我知道Char类型变量只能容纳一个字符 - 比如

char c = 'a';

如果这是真的,我写的这个C程序是如何工作的?

#include "stdafx.h"
#include <stdio.h>


int main()
{
    char c;
    c=getchar();
    while (c!=EOF)
    {   putchar(c);
        c = getchar();
    }

    getchar();
    return 0;
}

如果你按照这个例子,变量c是一个char,所以它只能容纳一个字符,但是当我在程序中时,我可以在控制台中键入一个像“Hello world”这样的整个字符串,然后我 点击Enter(我知道getchar()函数会将我输入的内容分配给变量c),控制台也会打印一个像“Hello world”这样的整个字符串(这就是putchar()函数的作用。)我跑了这个Visual Studio 2010中的代码。

我认为当我输入字符串“Hello world”并输入enter时,程序必须发出警告,因为发生了溢出。然而,当我输入超过char类型(1个字节长度)的大小限制的字符串时,一切运行正常。为什么没有错误?

1 个答案:

答案 0 :(得分:1)

你对getchar()函数的假设是错误的。

int getchar ( void );

此代码返回标准输入(stdin)

中的下一个字符
int putchar ( int character );

此代码将字符写入标准输出(stdout)。

检查以下链接:

getcharputchar

Plus(正如评论中所述)getchar读取缓冲输入,因此它会一直等到你输入。

如果您想在不等待输入支票this的情况下进行书写。