c - 如何将每一行放入从 c 程序中的文件读取的数组中?
问题描述
int main(int argc, char *argv)
{
char filename[20]={};
int count=0;
if(argc==2)
{
strcpy(filename, argv[1]);
}
else
{
printf("Need 2 command line parameters\n");
}
FILE *fp=fopen(argv[1], "r");
while(fgets(filename, 20, fp))
{
count++;
}
fseek(fp, 0, SEEK_SET);
int ptr=(int)malloc(count*sizeof(int));
while(fgets(filename, 20, fp))
{
ptr[i]=
}
return 0;
例如,我在文件中的数字是 19293 18239 19405 29302 10492 在每一行,我想把每一行放在一个数组中。我该怎么做呢?它不必在一个while循环中。
解决方案
我认为您的问题是您希望将读取的内容存储为每行的字符串。好的,有多种方法可以实现它。如果您不关心效率,您可以定义一个 char 指针数组,使其尽可能最大,以包含文件中的所有行。你可以这样做:
char* content[MAX_LINE] = { NULL };
char tmp[20];
char* ptr;
int i=0;
size_t ret;
FILE* fp;
fopen_s(&fp,"1.txt", "r");
while (fgets(tmp, 20, fp) != NULL)
{
ret = strlen(tmp);
ptr = (char*)malloc(ret+1);
strcpy_s(ptr, ret+1, tmp);
content[i++] = ptr;
}
更好的方法是使用指针列表。
推荐阅读
- javascript - 悬停图像未居中(CSS + JS)
- python - 是否可以像字典字符匹配那样对 Numpy 2D 数组进行排序
- .net - 单元测试 HttpClient 时如何模拟 GetDiscoveryDocumentAsync?
- flutter - 在颤振中运行我的 ios 设备时面临特定颤振项目中的问题
- java - 值低于 0 更改程序
- kubernetes - 卷可以挂载到 Kubernetes 中正在运行的容器吗?
- web-services - 在 IIS 中使用 URL 重写时无法公开访问 Web 服务
- python - 如何从 DF 中删除行直到找到空行(Python)
- javascript - Angular 8 Jasmine 和业力测试:模拟的 ngoni 承诺值未在 DOM 中呈现
- c - 带有两个参数的 switch 语句