arrays - 为什么 sscanf() 不将 CSV 文件中的行读入数组?
问题描述
我正在尝试将 CSV 文件中的整数读入二维数组。
这是我的代码...
FILE* fp = fopen(argv[1], "r");
int counter = 0;
char line[50];
while (fgets(line, 50, fp)) {
counter++;
}
int arry[counter - 1][4];
NUM_ROWS = counter -1;
counter = 0;
//Iterate File Again to Populate 2D Array of PID, Arrival Time, Burst Time, Priority
//File in Format: #,#,#,#
rewind(fp);
//Skip First Line of Var Names
fgets(line, 50, fp);
while(fgets(line, 50, fp)) {
sscanf(line, "%d%d%d%d", &arry[counter][0], &arry[counter][1], &arry[counter][2], &arry[counter][3]);
counter++;
}
但是, sscanf() 不会将该行读入数组。我不确定为什么这不起作用
编辑:这是文件的图片。
解决方案
- 您需要具有
scanf
反映扫描行格式的格式字符串。 - 经常检查结果
scanf
例子:
int main(void)
{
char line[] = "34543,78765,34566,35456";
int arry[1][4];
int counter = 0;
int result = sscanf(line, "%d,%d,%d,%d", &arry[counter][0], &arry[counter][1], &arry[counter][2], &arry[counter][3]);
printf("result = %d\n", result);
printf("CSV line = `%s`\n", line);
printf("data read: %d, %d, %d, %d\n", arry[counter][0], arry[counter][1], arry[counter][2], arry[counter][3]);
}
推荐阅读
- jquery - 验证:使用 jquery 检查两个数字是否匹配并忽略符号(如 $,/. )
- node.js - 在 express js 中使用路由器进行 Multer 存储
- mongodb - bson.D vs bson.M 用于查找查询
- c# - 根据 .NET 应用程序中是否引发异常来设置变量
- c++ - 错误:命名空间“std”中没有名为“enable_if_t”的模板;你是说'enable_if'吗?
- python - 为什么我用 Python Pillow 保存的图像文件比原始文件小?
- python - 通过列表索引切片数组的 Pythonic 方式
- intellij-idea - Intellij 不使用 (/** + Enter) 添加默认的 javadoc 注释
- typescript - 通过 Express 中间件传递工厂类实例
- spring - 带有 Kotlin 和 Gradle 的 Spring AOP (AspectJ) - 我无法让它工作