[英]How to read newline character('\n') delimited strings until EOF in C?
[英]how to read a string from a \n delimited file
我正在尝试读取返回分隔文件。 充满了短语。
我正在尝试将每个短语放入一个字符串中。
问题是当我尝试用文件读取时
fscanf(file,"%50s\n",string);
该字符串只包含一个单词。 当它与空间碰撞时,它会停止读取字符串
fscanf(file,"%50[^\n]\n",string);
除\\n
之外的每个字符都将被[^\\n]
消耗
将消耗最多0f 50个字符(确保字符串至少有51个空格)
..
\\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.