从C中的文本文件中读取一行时忽略前导空格

时间:2017-07-24 22:41:22

标签: c

我有一个包含以下内容的文本文件。

I am David. I live in San Diego at \u US \a zip code 95559
                      Mary has a little lamb in my yard \n

我试图逐行阅读它们并使用strtok()来提取子字符串。提取工作正常,但我想从文件中逐行读取时跳过前导空格。我想只跳过前面的空格,但保留有效字符后遇到的其他空格。

我尝试将指针调整为从isspace()无效的索引处开始。它仍然不适合我。

下面附带示例代码。

#define MAX_BUF_SIZE 255 

void ExtractData(FILE *fp)
{
   for (char buf[MAX_BUF_SIZE]; fgets(buf, (int)sizeof(buf), fp) != NULL;)
   {
       char *cp;

       for (cp = buf; isspace(*cp); cp++)
           ;

       for (; (cp = strtok(cp, "ABC")); cp = NULL)
           puts(cp);
   }
}

1 个答案:

答案 0 :(得分:0)

尝试使用fscanf(file, " ")

这也在这里得到解决:how to ignore whitespaces in fscanf()