gpt4 book ai didi

C函数从文件中读取2个值

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:26 26 4
gpt4 key购买 nike

我有一个 .txt 文件,里面有一些数字(例如 1 2 3 等),我想从这个文件中读取前两个数字,将第一个数字分配给 val1,第二个数字分配给 val2,但我必须使用单独的函数执行此操作。我认为最好的方法是声明一个包含两个整数的数组,然后将这些扫描的数字分配给数组中的这些整数。这是我的主要内容:

int main()
{
int val1, val2;
int array[2];
char file_name[10];

printf("Filename: ");
scanf("%s",&file_name);

getValues(file_name, array);
val1 = array[0];
val2 = array[1];
}

从文件中读取 2 个数字并将它们保存到数组的函数如下所示:

void getValues(char *file_name, int *array)
{
FILE *f;
if((f = fopen(file_name, "r") == NULL))
{
fputs(stderr, "Cannot open this file!");
exit(EXIT_FAILURE);
}

fscanf(f,"%d %d",&array[0],&array[1]);
printf("1st value: %d\n 2nd value: %d",array[0],array[1]);
fclose(f);
}

程序可以编译,但会为数组中的整数返回一些垃圾值,并最终崩溃。我在这里做错了什么?

最佳答案

我从修复警告开始:

$ gcc main.c 
main.c: In function ‘getValues’:
main.c:7:11: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
if((f = fopen(file_name, "r") == NULL))

然后它只对我进行了一些细微的类型更改就对我有用。

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

void getValues(char *file_name, int *array)
{
FILE *f;
if( (f = fopen(file_name, "r")) == NULL )
{
printf("Cannot open this file!");
exit(EXIT_FAILURE);
}

fscanf(f,"%d %d",&array[0],&array[1]);
printf("1st value: %d\n 2nd value: %d",array[0],array[1]);
fclose(f);
}

int main()
{
int val1, val2;
int array[2];
char file_name[10];

printf("Filename: ");
scanf("%s",file_name);

getValues(file_name, array);
val1 = array[0];
val2 = array[1];
}

文件数据.txt

2 3

输出

/system/cmake/generated/gnu-fadf49ce/fadf49ce/Debug/gnu
Filename: data.txt
1st value: 2
2nd value: 3
Process finished with exit code 0

关于C函数从文件中读取2个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37531387/

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