c语言文件读取
有这样一个需求。想生成几个随机数,打算在编译后的exe文件下弄个配置文件,然后读取生成随机数的相关信息大致上如此读取配置文件的参数,生成随机数的范围min_num、max_num,随机数的个数times,不生成的数字blacklist_num
然后开始生成随机数
这几个都可以用fscanf函数以类似这样的形式min_num=%d\n来读取,然后判断返回值是否为1,来判断是否正确读取
(fscanf(fp, "min_num=%d\n", num_info))==1
但最后blacklist_num=45, 60, 70,因为后面的数字不能确定是多少个,那这种要如何读取
我想到的方法是构造一个较大的数组,然后以如下形式读取
(fscanf(fp, “blacklist_num=%s\n”, num_info))==1
再调用strtok函数切分,分别存进数组里
而且,如果不小心输入的是字母等无效的信息,还得做判断
总感觉很麻烦,请问大家有没有方便些的思路或方法
没有,只能老老实实的写代码! 读取到文件尾就停止读取? 729 发表于 2021-6-16 21:27
读取到文件尾就停止读取?
是个方法,但也得把读取到的数字字符串分割成数字数组
要不然后面生成随机数,就没法排除这些数字
还是有些麻烦 加入不是文件读取,你会怎么做?
控制台怎么输入就怎么读取,sscanf或者fscanf自行百度
实在不行就委曲求全,改逗号为空格甚至换行符
方法多的是,还不至于到用PHP的地步,某些人还真是闲的没事干( 加一个不生成的数字的个数{:1_907:} 都差不多吧,其他方法也不比strtok简单多少,#include <windows.h>的话可以用ini文件,用GetProfileStringGetProfileInt系列读取 本帖最后由 mxwawaawxm 于 2021-6-17 22:55 编辑
无名氏wyw 发表于 2021-6-16 21:46
加入不是文件读取,你会怎么做?
控制台怎么输入就怎么读取,sscanf或者fscanf自行百度
实在不行就委曲求 ...
我打算配置文件里,是按这样的格式写参数
;不生成的数字(最多支持20个数字)
blacklist_num=45, 60, 70
最后发现用fscanf读取最后的字符串还行不通。因为fscanf读取到第一个空格,就停止读取,结果只读取到一个数字加逗号45,
难不成得读到blacklist_num=,然后再以fgetc函数依次存进事先定义的字符数组么。
或者用fgets函数么{:301_998:}(fscanf(fp, “blacklist_num=%s\n”, blacklist_num_str) mxwawaawxm 发表于 2021-6-17 22:43
我打算配置文件里,是按这样的格式写参数
;不生成的数字(最多支持20个数字)
b ...
那就不用空格嘛,实在不行就像你说的,用fgets之后再用sscanf 无名氏wyw 发表于 2021-6-19 17:31
那就不用空格嘛,实在不行就像你说的,用fgets之后再用sscanf
弄了一个半成品,写得很凌乱
https://www.52pojie.cn/thread-1462633-1-1.html
页:
[1]
2