繁体   English   中英

如何从\\ n分隔文件中读取字符串

[英]how to read a string from a \n delimited file

我正在尝试读取返回分隔文件。 充满了短语。

我正在尝试将每个短语放入一个字符串中。

问题是当我尝试用文件读取时

fscanf(file,"%50s\n",string);

该字符串只包含一个单词。 当它与空间碰撞时,它会停止读取字符串

fscanf(file,"%50[^\n]\n",string);
  1. \\n之外的每个字符都将被[^\\n]消耗

  2. 将消耗最多0f 50个字符(确保字符串至少有51个空格)

  3. .. \\n ",string这确保了\\n也被消耗,以便下一个调用不会返回空字符串。

带有%s fscanf在找到空格时停止读取。

由于您正在阅读未格式化的文本,因此您可以简单地使用fgets ,直到它填充您提供的缓冲区,它会找到换行符( \\n ),或者它到达文件结尾,以先到者为准。

可以修改fscanf以读取过去的空格。 细节有点复杂。 以下是手册页中有关%[...]的内容

匹配指定的一组接受字符中的非空字符序列; 下一个指针必须是指向char的指针,并且字符串中的所有字符必须有足够的空间,以及终止NUL字符。 通常跳过前导空格被抑制。 该字符串由特定集合中的字符组成(或不在其中); 该集合由open括号[character和close bracket]字符之间的字符定义。 如果开括号后面的第一个字符是旋音^,则该集合将排除这些字符。 要在组中包含一个小括号,请将其作为开括号或旋转后的第一个字符; 任何其他位置将结束该集。 连字符 - 也很特别; 当放置在两个其他字符之间时,它会将所有插入的字符添加到集合中。 要包含连字符,请将其设置为最后一个关闭括号之前的最后一个字符。 例如,`[^] 0-9-]'表示设置``除了紧括号,零到九和连字符'之外的所有东西。 该字符串的结尾是字符的外观不在(或带有旋律,in)设置或字段宽度用完时。

所以,%[^ \\ n]应该读取回车的所有内容。

避免使用scanf 如前所述,您应该使用fgets

如果您不想使用固定大小的缓冲区并允许任意长度的行,您可以尝试使用Chuck Falconer的公共域ggets函数 (这个链接现在似乎已经关闭,但archive.org有一份副本 。)

使用Payload_ID 00 01 02 03 .... 10发送数据

采用

char * pChar =“”; //用于字符串捕获。

fprintf(fp1,“%s”,strtok(pChar,“Payload_ID”));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM