2 qq 32681843 qq_32681843 于 2016.03.12 19:13 提问

关于sscanf的疑问,求解!
 #include<stdio.h>
#include<stdlib.h>
int main()
{
    char buf[256];
    int size;
    int *variable_array;
    int i;

    printf("Please Input Array size:");
    fgets(buf,256,stdin);
    sscanf(buf,"%d",&size);

    variable_array=malloc(sizeof(int)*size);

    for(i=0;i<size;i++)
        variable_array[i]=i;
    for(i=0;i<size;i++)
        printf("variable_array[%d]........%d\n",i,variable_array[i]);

    return 0;
}

中间的fgets和sscanf怎么用的啊?明明buf是字符串,却要输入数字,输入数字就算了,好歹也是字符型吧,sscanf将char以%d输入给size应该是char的asscii码吧,为什么还真的就得到了这个数字?

2个回答

cxsmarkchan
cxsmarkchan   2016.03.12 20:12

这是字符串的格式化输入,sscanf和scanf差不多,只不过后者是从屏幕输入,而前者是从字符串输入。至于为什么它能把一串用ascii码表示的字符串转换成数字,那是sscanf内部完成的,有兴趣的话可以看源码。初学只要记住和用scanf一样使用sscanf就可以了,只不过获取信息的对象从屏幕变成了字符串。

wangtiewei
wangtiewei   2016.03.12 21:49

1: fGets 是从一个文件流中读取数据
2:stdin是标准输入 std即standard(标准),in即input(输入),合起来就是标准输入。 一般就是指键盘输入到缓冲区里的东西
3: sscanf是一个格式化输入的一个标准库函数。他是以默认是以空格来截取字符(先这么理解把)比方说你有一个字符串为 10空格20
那么就可以用sscanf(buf,"%d%d",&i,&j);来给i ,j 赋值

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!