C 中的 Fscanf、字符串和数组?
Fscanf, Strings, and Arrays in C?
我有一项编程任务。代码是为我们准备好的,我们只需要填写它。我已经有一段时间没有接触数组了,所以我需要一些帮助。
程序正在声明一个字符数组。它使用 fscanf 从文件中获取字符串。该文件包含 3 行文本,每行中有两个由 space 分隔的字符串。所以它看起来像“12345 abcd”。
他们让这个循环进行。问题:
1) 是每个字符串存储在数组的单独值中,例如: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 作为单独的字符串处理(因为在 5 之后有一个 space)还是将“12345 abcd”作为文件中的一个字符串处理并且 return它。
3) 假设我使用 fscanf 扫描 12345 并将其存储在 (array[0]) 中。然后我在另一个实例中使用 fscanf。它会将下一个字符串 "abcd" 存储在数组 [1]
中吗?
谢谢
很遗憾,您的问题没有显示任何代码,因此很难回答。我可以解释一个非常简单的例子,希望它能对你有所帮助。
假设您有一个文件 "file.txt",其中只有一行文本,两个字符串由 space 分隔。正文是:"abcd 12345"。您可以 运行 以下代码从文件中读取两个字符串并将它们分别存储在两个字符数组中。
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] = '[=11=]'
您并不真正关心其余部分,因为这些都是以 null 结尾的数组。第二个数组:
str2[0] = '1'
str2[1] = '2'
str2[2] = '3'
str2[3] = '4'
str2[4] = '5'
str2[5] = '[=12=]'
这就是您的程序最有可能的工作方式。然而,可以将整行存储在一个数组中,这就是我们需要查看整个代码的原因。另外,您对 char 数组有点困惑。我建议您先阅读一些文档:http://www.cplusplus.com/doc/tutorial/ntcs/
我有一项编程任务。代码是为我们准备好的,我们只需要填写它。我已经有一段时间没有接触数组了,所以我需要一些帮助。
程序正在声明一个字符数组。它使用 fscanf 从文件中获取字符串。该文件包含 3 行文本,每行中有两个由 space 分隔的字符串。所以它看起来像“12345 abcd”。
他们让这个循环进行。问题:
1) 是每个字符串存储在数组的单独值中,例如: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 作为单独的字符串处理(因为在 5 之后有一个 space)还是将“12345 abcd”作为文件中的一个字符串处理并且 return它。
3) 假设我使用 fscanf 扫描 12345 并将其存储在 (array[0]) 中。然后我在另一个实例中使用 fscanf。它会将下一个字符串 "abcd" 存储在数组 [1]
中吗?谢谢
很遗憾,您的问题没有显示任何代码,因此很难回答。我可以解释一个非常简单的例子,希望它能对你有所帮助。
假设您有一个文件 "file.txt",其中只有一行文本,两个字符串由 space 分隔。正文是:"abcd 12345"。您可以 运行 以下代码从文件中读取两个字符串并将它们分别存储在两个字符数组中。
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] = '[=11=]'
您并不真正关心其余部分,因为这些都是以 null 结尾的数组。第二个数组:
str2[0] = '1'
str2[1] = '2'
str2[2] = '3'
str2[3] = '4'
str2[4] = '5'
str2[5] = '[=12=]'
这就是您的程序最有可能的工作方式。然而,可以将整行存储在一个数组中,这就是我们需要查看整个代码的原因。另外,您对 char 数组有点困惑。我建议您先阅读一些文档:http://www.cplusplus.com/doc/tutorial/ntcs/