相关疑难解决方法(0)

C中的fgets()函数

我知道每个人都告诉我使用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()吗?

c stdin std fgets

13
推荐指数
1
解决办法
4万
查看次数

使用C/C++有效地反序列化由浮点数,标记和空行组成的字符串

我有大字符串,类似于以下...

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  

...

...我正在尝试有效地,并且在交错的序列中,它们出现在字符串中,抓住......

  1. 文本标记
  2. 浮动值
  3. 空白行

......但我遇到了麻烦.

我已经尝试过strtod并成功地从字符串中抓取了浮点数,但我似乎无法使用strtod获取循环来向我报告交错的文本标记和空行.我不是100%自信strtod是"正确的轨道"给出交错的令牌和空白行,我也感兴趣.

字符串中存在标记和空行以给浮点数提供上下文,因此我的程序知道每个标记之后要使用的浮点值是什么,但是strtod看起来更加适应,可以理解,只是报告它遇到的浮点数一个字符串,不考虑空白行或令牌等愚蠢的东西.

我知道这在概念上并不是很难,但是对C/C++来说相对较新我在判断我应该关注哪些语言特性以最大限度地利用C/C++能够对这个问题产生的效率时遇到困难.

有什么指针吗?我非常感兴趣为什么各种方法的功能或多或少都有效.谢谢!!!

c c++ string floating-point parsing

4
推荐指数
1
解决办法
695
查看次数

标签 统计

c ×2

c++ ×1

fgets ×1

floating-point ×1

parsing ×1

std ×1

stdin ×1

string ×1