C中的Fscanf,字符串和数组?

时间:2015-02-01 19:39:33

标签: c arrays string scanf

我有一个编程任务。代码是为我们准备的,我们只需填写它。它已经有一段时间了,因为我触摸了数组,所以我需要一些帮助。

程序正在声明一个char数组。它使用fscanf从文件中获取字符串。该文件包含3行文本,其中两行由每行中的空格分隔。所以它看起来像“12345 abcd”。

他们已经循环了。问题:

1)每个字符串存储在数组ex:array [0] =“12345”和array [1] =“abcd”的单独值中。它不是这种格式,对吗? :array [16] = {1,2,3,4,5 ,, a,b,c,d}。 fscan处于循环中。格式:(fscanf(in,%s,array)

2)当调用fscanf时,它是否将12345作为单独的字符串处理(因为在五个之后有空格)或者它将“12345 abcd”作为文件中的一个字符串处理并返回它。

3)假设我使用fscanf在12345中扫描并将其存储在(array [0])中。然后我在另一个实例中使用fscanf。它会在数组[1]

中存储下一个字符串“abcd”

由于

1 个答案:

答案 0 :(得分:0)

不幸的是,您的问题没有显示任何代码,这使得它很难回答。我可以解释一个非常简单的例子,并希望它能帮助你。

假设您有一个文件“file.txt”,其中只有一行文本,两个字符串用空格分隔。正文是:“abcd 12345”。您可以运行以下代码从文件中读取这两个字符串,并将它们分别存储在两个char数组中。

FILE* file;
fopen_s(&file, "file.txt", "r");
char str1[10];
char str2[10];
fscanf(file, "%s %s", str1, str2);

回答你的问题1)第一个数组将如下所示:

str1[0] = 'a'
str1[1] = 'b'
str1[2] = 'c'
str1[3] = 'd'
str1[4] = '\0'

您并不关心其余部分,因为这些是以null结尾的数组。第二阵列:

str2[0] = '1'
str2[1] = '2'
str2[2] = '3'
str2[3] = '4'
str2[4] = '5'
str2[5] = '\0'

这是您的计划最有可能的工作方式。但是,可以将整行存储在一个数组中,这就是我们需要查看整个代码的原因。你也对char数组感到困惑。我建议您先阅读一些文档:http://www.cplusplus.com/doc/tutorial/ntcs/