QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 707|回复: 7

关于printf的问题

[复制链接]
发表于 2004-10-28 19:50:10 | 显示全部楼层 |阅读模式
大家看一个简单的函数
void get_and_print(void)
{
        char buffer[16];
        scanf("%s",buffer);
        printf(buffer);
}
这个printf参数不符合要求,会造成什么问题呢?
 楼主| 发表于 2004-10-28 20:00:03 | 显示全部楼层
完整的程序如下:
void get_and_print(void)
{
        char buffer[16];
        scanf("%s",buffer);
        printf(buffer);
}
int main()
{
        printf("Give me some input and I will echo it back:\n");
        get_and_print();
        printf("\nOK,I'm done!\n");
        exit(0);
}
但有两个漏洞,如何改正呢?
回复

使用道具 举报

发表于 2004-10-28 21:57:49 | 显示全部楼层
void get_and_print(void)
{
char buffer[16];
scanf("%s",buffer);
printf("%s\n",buffer);        /*在这里("%s\n",buffer)因为buffer是一个地址*/
}
int main()
{
printf("Give me some input and I will echo it back:\n");
get_and_print();
printf("\nOK,I'm done!\n");
exit(0);



gcc就有问题
回复

使用道具 举报

发表于 2004-10-28 21:58:03 | 显示全部楼层
What's the problem? I think your program will run. But there is one thing: when you are using scanf() to read a string, it will stop after it meets the first white space which means it won't read whatever after that white space. I suggest you use get() function to read a string.

For example, if you input "Hello, world!", you will only get "Hello" back when you are using scanf() function.
回复

使用道具 举报

发表于 2004-10-28 21:58:16 | 显示全部楼层
这样就可以了
回复

使用道具 举报

发表于 2004-10-28 22:06:58 | 显示全部楼层
楼上的楼上这段时间常来啊,欢迎欢迎!     
回复

使用道具 举报

发表于 2004-10-28 22:10:26 | 显示全部楼层
[quote:6aa6d5e330="sagaeon"]楼上的楼上这段时间常来啊,欢迎欢迎!     [/quote]

Are you talking about me? My pleasure.  
回复

使用道具 举报

发表于 2004-10-29 10:12:12 | 显示全部楼层
[quote:0168a96a89="HOUSCOUS"][quote:0168a96a89="sagaeon"]楼上的楼上这段时间常来啊,欢迎欢迎!     [/quote]

Are you talking about me? My pleasure.  [/quote]就是你,别东张西望的!多来这儿逛逛,你住在开源的发源地,能给我们很大的帮助啦!   
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 05:31 , Processed in 0.043397 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表