Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在函数之间传递参数_C_Arrays_Variables_Pointers - Fatal编程技术网

C 在函数之间传递参数

C 在函数之间传递参数,c,arrays,variables,pointers,C,Arrays,Variables,Pointers,我正在做一个程序,在这个程序中我不能使用全局变量等。这是一个关于生成DNA结构等的学校项目。。。我的问题是,我不知道如何在几个函数之间传递变量。下面的代码是我的一个函数,它读取一个文件并将DNA存储在阵列磁极中。此外,每次从文件中读取有效字符时,它都会增加变量i int nacitanie(){ FILE *fp; fp = fopen("DNAsekvencia.dat", "r"); if((fp = fopen("DNAsekvencia.dat", "r"

我正在做一个程序,在这个程序中我不能使用全局变量等。这是一个关于生成DNA结构等的学校项目。。。我的问题是,我不知道如何在几个函数之间传递变量。下面的代码是我的一个函数,它读取一个文件并将DNA存储在阵列磁极中。此外,每次从文件中读取有效字符时,它都会增加变量i

    int nacitanie(){
    FILE *fp;
    fp = fopen("DNAsekvencia.dat", "r");
    if((fp = fopen("DNAsekvencia.dat", "r")) == NULL)
    {
            printf("Neotvoreny subor");
            fflush(stdout);
    }

    int a, i=0, x=0;
    char z, pole[1000];

    //citanie DNA zo suboru
    while((z = getc(fp)) != EOF)
    {
        pole[i] = z;
        i++;
    }
    for(a=0; a<i; a++){
        if(pole[a] == 'A' || pole[a] == 'C' || pole[a] == 'G' || pole[a] == 'T' || pole[a] == 'a' || pole[a] == 'c' || pole[a] == 'g' || pole[a] == 't'){
            x++;
        }else{
            x--;
        }
    }
    if(x==a){
        printf("Sekvenciu sa podarilo nacitat\n");
        fflush(stdout);
    }else{
        printf("Sekvencia nesplna podmienky\n");
        fflush(stdout);
    }

    fclose(fp);
    if(fclose(fp) == EOF)
    printf("Subor sa nezatvoril");

    return 0;
}
我的另一个函数是直方图,它需要使用前面函数中的数组极点和i。 我该怎么做?我试着用指针来做,但没用。有什么想法吗?我对这方面还不熟悉

    int histogram(){

    FILE *fp;
    fp = fopen("DNAsekvencia.dat", "r");
    if((fp = fopen("DNAsekvencia.dat", "r")) == NULL)
    {
            printf("Neotvoreny subor");
            fflush(stdout);
    }
    int h, a, c, g, t;
    for(h=0; h<i; h++){
        if(pole[h] == 'A' || pole[h] == 'a'){
            a++;
        }else if(pole[h] == 'C' || pole[h] == 'c'){
            c++;
        }else if(pole[h] == 'G' || pole[h] == 'g'){
            g++;
        }else if(pole[h] == 'T' || pole[h] == 't'){
            t++;
        }
    }
    printf("A: %d\n", a);
    fflush(stdout);

    printf("C: %d\n", c);
    fflush(stdout);

    printf("G: %d\n", g);
    fflush(stdout);

    printf("T: %d\n", t);
    fflush(stdout);

    fclose(fp);
    if(fclose(fp) == EOF)
        printf("Subor sa nezatvoril");

    return 0;
}

向函数发送指向变量的指针,如下所示:

void f(int *a) {
    (*a)++;
}

void g(int *a) {
    (*a)++;
}

int main(void) {
    int a = 0;
    f(&a);
    g(&a);
    printf("%i", a);

    return 0;
}

printf结果将是:2

代码在没有中间关闭的情况下打开文件两次:fp=fopenDNAsekvencia.dat,r;下面一行。建议删除此行。代码正在关闭一个文件trice,但没有中间打开:fclosefp;下面一行。建议删除这行。我不明白你的确切意思。我应该删除哪一行?为什么。。请解释一下,若我使用一个数组,比如数组[a],我会把*放在a前面吗?数组[*a]?