使用scanf和family来读取由c中的文件空格分隔的两个字符串

时间:2011-02-18 12:30:33

标签: c scanf

我正在尝试读取2个字符串,这些字符串由文件中的空格分隔。

无论我尝试什么,我都会继续初始化第一个字符串,但第二个字符串始终为NULL。

我尝试过的一些格式化程序是"%s%s""%s %s""%s[\n\t ]%s"

我做错了什么想法?

我认为它与scanf的内部缓冲区有关 - 读取第一个%s然后在缓冲区读取中放入一些不可见的字符,然后读取第二个%s,第二个字符串是完成后NULL

2 个答案:

答案 0 :(得分:1)

你的字符串是什么样的?

我不认为你的假设fscanf()通过在缓冲区中放置“一些不可见的字符”来修改输入数据是真的。

您的字符串似乎更有可能符合%s格式说明符的要求。

答案 1 :(得分:1)

在您的字符串之间,如果一个空格

fscanf(...,“%s%s”,...); //你知道如何填充标有...的空间

但是如果不知道空格的数量:

char stack[YourscreenSize];
fscanf ( ..., "YourscreenSize[^\n]", stack );  // take all line in one data, 

然后解析它

如果未知空白数量,(第二种方式)

  • 从文件中获取数据
  • 检查它,在isgraph函数中发送第一个字符是否为空格
  • 如果是空格,则删除存储的数据

迭代地执行它。当你看到EOF从迭代中断时,(你可以查看返回值) fscanf知道它是否读取char或EOF)