用C解析文本

6 c parsing

我有这样一个文件:

...
words 13
more words 21
even more words 4
...
Run Code Online (Sandbox Code Playgroud)

(一般格式是一个非数字字符串,然后是一个空格,然后是任意数量的数字和一个换行符)

我想解析每一行,将单词放入结构的一个字段中,将数字放入另一个字段中.现在我正在使用一个难看的黑客读取线,而字符不是数字,然后阅读其余的.我相信有一个更清晰的方式.

Rob*_*nes 6

编辑:您可以使用pNum-buf获取字符串的字母部分的长度,并使用strncpy()将其复制到另一个缓冲区.请务必在目标缓冲区的末尾添加"\ 0".我会在pNum ++之前插入这段代码.

int len = pNum-buf;
strncpy(newBuf, buf, len-1);
newBuf[len] = '\0';
Run Code Online (Sandbox Code Playgroud)

您可以将整行读入缓冲区然后使用:

char *pNum;
if (pNum = strrchr(buf, ' ')) {
  pNum++;
}
Run Code Online (Sandbox Code Playgroud)

获取指向数字字段的指针.


Amb*_*ber 0

您可以尝试使用strtok()对每一行进行标记,然后检查每个标记是数字还是单词(一旦获得标记字符串,这是一个相当简单的检查 - 只需查看标记的第一个字符)。