我知道每个人都告诉我使用fgets而不是因为缓冲区溢出而得到的.但是,我对第三个参数感到有点困惑fgets().据我了解,fgets依赖于:
char * fgets ( char * str, int num, FILE * stream );
Run Code Online (Sandbox Code Playgroud)
char* str 是我的输入将存储在哪里的ptr.
num 是要读取的最大字符数.
但是什么FILE *stream?如果我只是提示用户输入字符串(如句子),我应该输入" stdin"吗?
我应该键入FILE *stdin顶部,靠近main()吗?
我有大字符串,类似于以下...
some_text_token 24.325973 -20.638823 -1.964366 0.753947 -1.290811 -3.547422 0.813014 -3.547227 0.472015 3.723311 -0.719116 3.676793 other_text_token 24.325973 20.638823 -1.964366 0.753947 -1.290811 -3.547422 -1.996611 -2.877422 0.813014 -3.547227 1.632365 2.083673 0.472015 3.723311 -0.719116 3.676793 ...
...我正在尝试有效地,并且在交错的序列中,它们出现在字符串中,抓住......
......但我遇到了麻烦.
我已经尝试过strtod并成功地从字符串中抓取了浮点数,但我似乎无法使用strtod获取循环来向我报告交错的文本标记和空行.我不是100%自信strtod是"正确的轨道"给出交错的令牌和空白行,我也感兴趣.
字符串中存在标记和空行以给浮点数提供上下文,因此我的程序知道每个标记之后要使用的浮点值是什么,但是strtod看起来更加适应,可以理解,只是报告它遇到的浮点数一个字符串,不考虑空白行或令牌等愚蠢的东西.
我知道这在概念上并不是很难,但是对C/C++来说相对较新我在判断我应该关注哪些语言特性以最大限度地利用C/C++能够对这个问题产生的效率时遇到困难.
有什么指针吗?我非常感兴趣为什么各种方法的功能或多或少都有效.谢谢!!!