使用 scanf 而不是 var=0 后,C 程序停止工作

标签 c vector allocation

所以我有这个代码:

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

int functie ( int v[], int nr, int z)
{
    int i,count;
    scanf("%d", &z);
    for(i=0;i<nr;i++) {
        if(z==v[i]) {
            count=count+1;
        }
    }
    return z;
}

int main()
{
    int i,nr,z;
    fscanf("%d", &z);
    FILE *f;
    FILE *g;
    f=fopen("data-in.txt", "r");
    fscanf(f,"%d",&nr);
    int *v=malloc(nr*sizeof(int));
    for(i=0;i<nr;i++) {
        fscanf(f,"%d",&v[i]);
    }
    g=fopen("data-out.txt", "w");
    fprintf(g,"%d %d", functie(v,nr,z));
    fclose(f);
    fclose(g);
    free(v);
}

在我有 int z=0; 之前而不是尝试扫描我的 var z。 当我运行此程序时,我收到停止工作错误。

我有一个从文件中读取数字(整数)的数组,第一行是元素数量,第二行是元素。 我需要一个 var 让 z 来检查一个元素在 vector 中出现的次数(检查扫描的数字 z 是否等于一个元素并 +1 计数)

示例:

在文件中

4(因为我有 4 个元素)

1 2 3 3(我的元素)

将 z 扫描为 3 z==3 真 计数=1 再次 计数=2

最佳答案

这里有两个问题,都在 main 中。第一:

fscanf("%d", &z);

此函数需要第一个参数为 FILE *,但您未指定该参数。大概您想从控制台读取,因此使用 scanf:

scanf("%d", &z);

第二期:

fprintf(g,"%d %d", functie(v,nr,z));

您的格式字符串需要两个整数参数,但您只传入一个。摆脱额外的格式说明符:

fprintf(g,"%d", functie(v,nr,z));

关于使用 scanf 而不是 var=0 后,C 程序停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50613633/

相关文章:

c - 指针之间的赋值仅在 main 内部有效,而在过程体中无效

c - 如何使用c程序删除注释

c++ - std::bad_alloc 之后 std::vector 的状态

c - 如何为从 c 中的文件读取的一行文本分配足够的内存

c++ - 高级 C 和 C++ 编译 : unable to compile the example program mentioned in the book

c - 上证有效值计算

c++ - 如何将一个 vector 传递给另一个 vector 推回? (无需创建额外的变量来传递)

c++ - 在 vector 中保留插入元素的地址(C++)

自定义 malloc() 实现头设计

c - 动态分配char指针指针