sizeof-关于sscanf的疑问,求解!

问题描述

关于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(buf256stdin);    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]........%dn""ivariable_array[i]);    return 0;}

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

解决方案

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

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

时间: 2024-09-09 08:18:29

sizeof-关于sscanf的疑问,求解!的相关文章

java 打印目录下所有文件和目录的名字 疑问求解

问题描述 java 打印目录下所有文件和目录的名字 疑问求解 结果为: Exception in thread "main" java.lang.NullPointerException at IO.打印目录下所有目录名文件名.print(打印目录下所有目录名文件名.java:10) at IO.打印目录下所有目录名文件名.main(打印目录下所有目录名文件名.java:25) 如果把main方法中File file = new File("d:"); 空指针异常会

Visual Studio 2008发现疑问求解

问题描述 我之前使用VisualStudio2005StandardEdition(简体中文版),现在我有一台电脑装了VisualStudioTeamSystem2008(试用版)然后输入CDKEY升级到了正式版,疑问就是在2005建立任何工程时,"解决方案配置"有"Debug"和"Release","解决方案平台"有".NET"和"AnyCPU"和"MixedPlatform

使用正则表达式(regex_replace)模拟读取INI文件

废话不多说了,直接给大家贴代码了,具体代码如下所示: #include "stdio.h" #include <sstream> #include <iostream> #include <fstream> #include <regex> using namespace std; void Trim(char * str); void lTrim(char * str); void rTrim(char * str); // 测试ssc

路径-求问一个~/和/表示目录的问题

问题描述 求问一个~/和/表示目录的问题 我的代码是这样的 <body style="overflow: hidden; background: url(~/Content/Images/7_7.jpg) no-repeat center center;"> <!----------------------网页的头部 开始-------------------------> <div style="background: url(/Content

通过UseAfterFree实现命令执行

本贴讲述如何利用UAF漏洞,实现GOT表覆盖,从而实现命令执行,另外漏洞程序由本人通过逆向14年的ctf获得,同时进行了一些功能的精简,从而得到下面的漏洞程序,解决漏洞讲解没有漏洞源码源码的问题. 漏洞程序,是一个用链表实现的简单留言板,用户可以查看消息,并对相关的消息进行:回复.删除.修改. 漏洞代码uaf.c如下: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unis

阅读libevent中的小问题

问题描述 阅读libevent中的小问题 下面一个断言:EVUTIL_ASSERT(chain->refcnt > 0); 看其实现: #define EVUTIL_ASSERT(cond) EVUTIL_NIL_CONDITION_(cond)#define EVUTIL_NIL_CONDITION_(condition) do { (void)sizeof(!(condition));}while(0) 疑问 EVUTIL_ASSERT(cond)是一个断言吗?如果不是,那么这是在干什么?

c++关于stl中list的insert函数与push_front函数疑问,求解。

问题描述 c++关于stl中list的insert函数与push_front函数疑问,求解. #include#includeusing namespace std;int main(){ listout; list::iterator it; list::iterator begin=out.begin()end; out.insert(begin'a'); out.insert(begin'b'); out.insert(begin'c'); out.insert(begin'd'); /*

sgi- 今天看SGI STL源码剖析空间配置器部分,有一个疑问,求解 .

问题描述 今天看SGI STL源码剖析空间配置器部分,有一个疑问,求解 . 今天看SGI STL源码剖析空间配置器部分,有一个疑问,求解. 具体问题是: SGI STL的第二级空间配置器分配完空间之后,不回收给系统吗?(每次都添加都内存池free list) 没看到相关释放内存池的代码. 求解释.

c-迷宫求解 递归方法 求助大牛帮忙解答疑问

问题描述 迷宫求解 递归方法 求助大牛帮忙解答疑问 //此题目是迷宫求解问题,起点是[0][0]位置,要到达的位置是[N-1][N-1] //traverse()此函数为什么就能完成了迷宫求解问题呢? //maze_ret[i][j] = maze[i][j]; 此语句具体含义是什么? //maze_ret[11][11];此数组的具体用处是什么? //我认为函数会把所有的为0的数据全部置为3,但是为什么没有呢? #include int N; int maze[11][11]; int maz