从C中的字符串中读取数据(如scanf)

时间:2011-02-02 18:02:00

标签: c scanf

我已经读入并存储了一个数据文件,我将其处理为一个char数组数组,一个char数组用于文件中的每一行,现在我想处理各行。我不知道该怎么做。

我像这样阅读每一行:

/* Read the whole file into an array */
char read_lines[FILE_LENGTH][FILE_WIDTH];
for(i=0;i<FILE_LENGTH;i++) {
    fscanf(data_file, "%[^\n]", read_lines[i]);
    fscanf(data_file, "%[\n]", dump);
}

我需要读取格式为%d \ t%d \ t%d \ t%d \ t%d的每一行中的数据,我真的不确定如何将特定变量读入scanf功能。我知道fscanf()从文件读取而scanf()从用户输入读取,是否有从变量读取的函数?

我来自python背景,在python中,我只使用以下代码:

read_lines = open('file.txt').readlines()
for line in lines:
    i = lines.index(line)
    first[i], second[i], third[i], forth[i], fifth[i] = line.split('\t')

我真的看不出如何在C中做相同的事情。我做了一些研究,但我找不到任何有用的东西。任何帮助将不胜感激!

谢谢!

2 个答案:

答案 0 :(得分:2)

或许查看sscanf。就像它的堂兄 scanf fscanf 一样,但它取代了一个字符串。以下是来自上述链接的剪辑。

  

sscanf函数接受一个字符串,从中读取输入,然后,以类似于printf和相关函数的方式,接受模板字符串和一系列相关参数。它尝试使用类似printf的转换说明符将模板字符串与其读取输入的字符串进行匹配。

答案 1 :(得分:0)

您可以使用strtok函数[阅读联机帮助页]来分割字符串

e.g。 http://www.gnu.org/s/libc/manual/html_node/Finding-Tokens-in-a-String.html