Hugo Gao 2016-03-12 11:13 采纳率: 45.7%
浏览 1433

关于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 2016-03-12 12:12
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 WPF使用Canvas绘制矢量图问题
  • ¥15 用三极管设计一个单管共射放大电路
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架