如何保存数组中文本文件中的所有数字?例如:
我的名字是亨利,我今年19岁。我出生于1992年.5ro2k。
程序应该从文件中读取数字19,1992,5,2并将它们保存在一个数组中。如果单词是52rok,那么它应该读取数字52。
答案 0 :(得分:2)
一种方法是用空格替换除数字之外的所有字符,并使用strtok标记生成的字符串。
这是一个脏的伪编码示例,您可以根据自己的需要进行修改:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main() {
char s[] = "My name is Henry, I am 19 years old. I was born in 1992. 5ro2k.";
char *p = s;
while (*p) {
if (!isdigit(*p)) {
*p = ' ';
}
p++;
}
p = strtok(s, " ");
while (p) {
printf("%s\n", p);
p = strtok(NULL, " ");
}
}
使这个例子变脏的主要原因是strtok
的使用,这不是线程安全的。您应该使用strtok_r
代替。当然你需要自己解析整数字符串(atoi
是一个很好的选择)。