问题描述
- 关于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