gpt4 book ai didi

C 如何从命令行参数读取文件

转载 作者:行者123 更新时间:2023-11-30 15:11:27 25 4
gpt4 key购买 nike

我的目标是读取一个txt文件(small_ramp.txt),然后将除第一个之外的所有数字输入到一个数组中。该文件有11行数字,第一行的数字10表示有多少个数字文件中包含以下 10 个数字 (1-10) Small_ramp.txt 。在命令提示符下,我在执行此命令时输入 Stats.exe Error收到此错误消息。

#include <stdio.h> 
#include <stdlib.h>

int main(int argc, char* argv[])
{
int n, i;
FILE* fpointer;
double *arr;

fpointer = fopen(argv[1], "r");

if (argc != 2) {
printf("ERROR: you must specify file name!\n");
return 1;
}

if (!fpointer) {
perror("File open error!\n");
return 1;
}

fscanf(fpointer, "%d", n);// Scan first line of small_ramp.txt to find array size
arr = (double*)malloc(sizeof(double) * n);// allocate memory for array with the size given (n)

while (!feof(fpointer)) {
fscanf(fpointer, "%lf", arr + 1);
}

for (int i = 0; i < n; ++i)
{
printf("%lf,", arr[i]);
}

fclose(fpointer);
return 0;
}

我想我的问题是我是否正确地读取了文件,如果是的话,有人可以指出我修复此错误的正确方向吗?

最佳答案

  • 您必须在使用 argv[1] 之前检查参数数量.
  • 将类型错误的数据传递给fscanf()调用未定义的行为。使用fscanf(fpointer, "%d", &n);而不是fscanf(fpointer, "%d", n); .
  • 您仅将数据读取到 arr[1] 。因此,arr[0]具有不确定的值,并且使用该值会调用未定义的行为
  • %f应该使用而不是 %lf打印double值(value)通过 printf() .

注意:他们说 you shouldn't cast the result of malloc() in C .

关于C 如何从命令行参数读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35644664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com