我正在尝试读取2个字符串,这些字符串由文件中的空格分隔。
无论我尝试什么,我都会继续初始化第一个字符串,但第二个字符串始终为NULL。
我尝试过的一些格式化程序是"%s%s"
,"%s %s"
,"%s[\n\t ]%s"
我做错了什么想法?
我认为它与scanf的内部缓冲区有关 - 读取第一个%s
然后在缓冲区读取中放入一些不可见的字符,然后读取第二个%s
,第二个字符串是完成后NULL
。
答案 0 :(得分:1)
你的字符串是什么样的?
我不认为你的假设fscanf()通过在缓冲区中放置“一些不可见的字符”来修改输入数据是真的。
您的字符串似乎更有可能符合%s格式说明符的要求。
答案 1 :(得分:1)
在您的字符串之间,如果只一个空格
fscanf(...,“%s%s”,...); //你知道如何填充标有...的空间
但是如果不知道空格的数量:
char stack[YourscreenSize];
fscanf ( ..., "YourscreenSize[^\n]", stack ); // take all line in one data,
然后解析它
如果未知空白数量,(第二种方式)
迭代地执行它。当你看到EOF从迭代中断时,(你可以查看返回值) fscanf知道它是否读取char或EOF)