【发布时间】:2020-06-04 08:24:00
【问题描述】:
我无法将这样的东西解析成数组。
所以我的文本文件 test.txt 有这一行: (1231212A, 1231212B) (1231212C, 321128D)
我试图将它扫描成一个数组,但它需要分成几部分
int 类型的第 1 部分应为:123
第 2 部分:12
第 3 部分:12
第 4 部分(字符):A
我需要在一行内执行 4 次
这是我的代码,但它不能正常工作
{
int nums[1][12];
char chars[1][4];
FILE *file;
file = fopen("test.txt", "r");
if (file != NULL){
fscanf(file , "%*s%3d %2d %2d %s %*s %2d %2d %2d %s%*s %*s%3d %2d %2d %s%*s %2d %2d %2d %s%*s"
, &nums[0][0],&nums[0][1],&nums[0][2],&chars[0][0],&nums[0][3],&nums[0][4],&nums[0][5],&chars[0]
[1],&nums[0][6],&nums[0][7],&nums[0][8],&chars[0][2],&nums[0][9],&chars[0][10],&nums[0][11],&chars[0]
[3]);
}
当我打印这些数组时,它们不会打印正确的数字和字符。 我需要 fscanf 部分的帮助 谢谢你
【问题讨论】:
-
为什么在格式字符串的开头使用
%*s?只需使用文字(来匹配左括号。逗号和其他括号也一样。 -
另请注意,
%s指令会读取字符直到遇到空格,因此这会将字母和逗号都读取到提供的位置。 -
1行的二维数组有什么原因吗?
-
@DavidC.Rankin -- 我假设 OP 计划添加更多数据行。
-
是的,看起来就是这样——只是有点奇怪。