c - 存储来自给定文件的数组长度和数组输入的问题,其中第一个整数是第一个数组的长度
问题描述
我在创建一个读取文件“data.txt”并将文件的第一个整数作为数组A的长度和文件中第二行的第一个整数作为第二个数组B的长度的程序时遇到问题. 之后我将对这两个数组进行排序,但我只需要帮助尝试从文件中获取输入并将它们存储在两个数组中。
所以文件可能如下所示:
4 5 8 6 4
3 8 5 4
第一个字符“4”表示 的长度arrayA
为 4 并包含接下来的 4 个后续输入。第二行第一个字符,'3'表示长度arrayB
为3.. .
int main(){
FILE* fileP;
int aLngth=0, int bLngth=0;
int i=0, j=0;
fileP = fopen("data.txt","r");
fscanf(fileP, "%i", &aLngth);
int arrayA[aLngth];
for(i=0; i<=aLngth; i++){
if(i==0){continue;}
fscanf(fileP, "%i", &arrayA[i]);//store length a
if(i+1>aLngth){
fscanf(fileP, "%i", &bLngth); //store length b
for(j=0;j<=blLngth; j++){
fscanf(fileP, "%i", &arrayB[j]);
}
}
}
fclose(fileP);
}
解决方案
你应该在第一个循环之后有第二个循环,而不是在它里面。
没有理由跳过i==0
第一个循环。
您缺少arrayB
.
for
循环应该使用而<
不是<=
在重复条件中,因为数组的最后一个索引是长度为 1。
#include <stdio.h>
int main(){
FILE* fileP;
int aLngth=0, int bLngth=0;
int i=0, j=0;
fileP = fopen("data.txt","r");
fscanf(fileP, "%i", &aLngth);
int arrayA[aLngth];
for(i=0; i<aLngth; i++){
fscanf(fileP, "%i", &arrayA[i]);
}
fscanf(fileP, "%i", &bLngth);
int arrayB[bLngth];
for(j=0;j<bLngth; j++){
fscanf(fileP, "%i", &arrayB[j]);
}
fclose(fileP);
}
推荐阅读
- biztalk - 使用 Powershell Extensions for BizTalk 连接到远程 BizTalk 服务器
- java - Java:类中的方法不能应用于给定类型
- java - JBehave - 在一个故事中不可能有多个结果?
- angular - 如何使用 javascript 从简单的 html 页面触发 Angular Web 组件(自定义元素)上的 Click 事件
- python - 查找具有最大数据的数据框
- java - 制作 java tic tac toe vs 计算机
- php - 正则表达式:拆分函数调用参数
- c# - 使用模型在 POST 期间 ASP.Net Cookie 身份验证到期
- common-lisp - 在 common lisp 中将整数格式化为字符
- asp.net - 验证当前密码的最佳方法是什么?