gpt4 book ai didi

c - 按地址传递、scanf、取消引用

转载 作者:太空宇宙 更新时间:2023-11-04 01:20:58 25 4
gpt4 key购买 nike

我写了一个程序,采用了以下概念:

我创建一个整数 x 通过地址传递给一个函数,以及一个文件名,如果可用,该函数将打开文件,扫描第一行并设置 pX 指向等于扫描线。

只是它不起作用,而且我看不出我做错了什么。据我所知,下面的代码通常是如何完成的,但我不确定我是否没有正确使用指针或其他什么scanf()

void foo() {
char input[20] = "test.txt";
int x = 1;
bar(input, &x);
}

void bar(char *fileName, int *pX) {
FILE *fp = fopen(fileName, "r");
char *buffer = malloc(15 * sizeof(int));
fgets(buffer, 15, fp);
scanf(buffer, "%d", *pX);
free(buffer);
fclose(fp);
}

最佳答案

换行:

scanf(buffer, "%d", *pX);

到:

sscanf(buffer, "%d", pX);

你需要函数sscanf对于你正在尝试做的事情。

scanfsscanf 都将指针作为参数。 pXint * 类型,因此是指向 int 的指针,应该适合您。您传递的 *pX 是此指针的内容,换句话说,是 int

此外,更改行:

char *buffer = malloc(15 * sizeof(int));

到:

char *buffer = malloc(15 * sizeof(char));

或者简单地说:

char *buffer = malloc(15);

总是check the result of malloc :

if (buffer == NULL){
...
}

关于c - 按地址传递、scanf、取消引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42619906/

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