【发布时间】:2014-04-09 10:42:24
【问题描述】:
我需要逐行读取字符串。我尝试了以下代码,但在中间有空行并且无法找到我做错了什么时出现错误。
void ReadAllLine(char *szCont)
{
int rdl = 0; /* read length */
int len = 0; /* total length */
char szLine[512] = {};
len = strlen(szCont);
int tl = 0; /* temp len */
while(rdl < len)
{
sscanf(szCont + rdl, "%512s\r\n", szLine);
rdl += strlen(szLine) + 1;
printf("%s\n", szLine);
}
return 0;
}
输入:
#Tag01
ENTRY01
ENTRY02
#Tag02
ENTRY11
ENTRY22
#Tag03
ENTRY31
ENTRY32
输出:
#Tag01
ENTRY01
ENTRY02
#Tag02
ENTRY11
ENTRY22
#Tag03
3
ENTRY31
ENTRY32
为什么这里要打印 3?
注意:每一行都以 Windows 符号 (\r\n) 结束,并且任何行之前或之后都没有空格键。输入从文件中读取并传递给此函数。
【问题讨论】:
-
\r\n不是“Unix 表示法”,而是 Windows 的。类 Unix 系统使用\n。 -
@Jongware ok 更正
-
你说没有空格但
\r\n不是空格字符?仅供参考all of those are whitespace characters. -
@legends2k 谢谢你的信息。