Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.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_Function - Fatal编程技术网

C 如何从一个函数获取值并将其传输到另一个函数?

C 如何从一个函数获取值并将其传输到另一个函数?,c,function,C,Function,第一个功能是创建新帐户。我想存储新的_acc名称和DOB并将其转移到另一个函数。因此,当我在第二个函数中调用名称时,它应该检查该名称,如果存在,则给我访问权限 一项功能 int new_acc(FILE *fp, char *name, size_t namesize, char *dob, size_t dobsize){ char data[8][51]; int done = 0; int repeat = 0; while (!done) {

第一个功能是创建新帐户。我想存储新的_acc名称和DOB并将其转移到另一个函数。因此,当我在第二个函数中调用名称时,它应该检查该名称,如果存在,则给我访问权限

一项功能

int new_acc(FILE *fp, char *name, size_t namesize, char *dob, size_t dobsize){
    char data[8][51];
    int done = 0;
    int repeat = 0;

    while (!done) {
        if (repeat) {
            if (! allowmore())
                break;}
        repeat = 1;

        for (int i = 0; i < 8; i++) {
            printf("Enter your %s: ", listing[i]);
            if (scanf(" %50[^\n]", data[i]) != 1) {
                done = 1;
                break;}
        }
        if (!done) { fprintf(fp, "%s %s\n", data[0], data[1]); }
    }
    fclose(fp);
    return 0;
}
int list_view(char *name, char *dob){
    printf("For person details, please enter the person name: \n");
    FILE * fr = fopen("/home/bilal/Documents/file.txt","r");

    printf("Enter your Name: ");
    if (scanf("%50s", name) != 1){       // Giving access through this 
       perror("Error while reading!");    // code
       return 0;}

    char ch[100];
    int index = 0;
    for (int i=0; i<8; i++){

        if(fr != NULL){
            while((ch[index] = fgetc(fr)) != EOF){
               if(ch[index] == ' ') {
                   ch[index] = '\0';
                   printf("Here is your %s: %s\n",listing[i], ch);
                   index = 0;
                   i++;}
               else { index++; }
           }
           fclose(fr);
        }
        else{ printf("Unable to read file."); }
    }
  return 0;
}
int new\u acc(文件*fp,字符*name,大小\u t名称,字符*dob,大小\u t dobsize){
字符数据[8][51];
int done=0;
int repeat=0;
而(!完成){
如果(重复){
如果(!allowmore())
中断;}
重复=1;
对于(int i=0;i<8;i++){
printf(“输入您的%s:”,清单[i]);
如果(scanf(“%50[^\n]”,数据[i])!=1){
完成=1;
中断;}
}
如果(!done){fprintf(fp,“%s%s\n”,数据[0],数据[1]);}
}
fclose(fp);
返回0;
}
另一个功能

int new_acc(FILE *fp, char *name, size_t namesize, char *dob, size_t dobsize){
    char data[8][51];
    int done = 0;
    int repeat = 0;

    while (!done) {
        if (repeat) {
            if (! allowmore())
                break;}
        repeat = 1;

        for (int i = 0; i < 8; i++) {
            printf("Enter your %s: ", listing[i]);
            if (scanf(" %50[^\n]", data[i]) != 1) {
                done = 1;
                break;}
        }
        if (!done) { fprintf(fp, "%s %s\n", data[0], data[1]); }
    }
    fclose(fp);
    return 0;
}
int list_view(char *name, char *dob){
    printf("For person details, please enter the person name: \n");
    FILE * fr = fopen("/home/bilal/Documents/file.txt","r");

    printf("Enter your Name: ");
    if (scanf("%50s", name) != 1){       // Giving access through this 
       perror("Error while reading!");    // code
       return 0;}

    char ch[100];
    int index = 0;
    for (int i=0; i<8; i++){

        if(fr != NULL){
            while((ch[index] = fgetc(fr)) != EOF){
               if(ch[index] == ' ') {
                   ch[index] = '\0';
                   printf("Here is your %s: %s\n",listing[i], ch);
                   index = 0;
                   i++;}
               else { index++; }
           }
           fclose(fr);
        }
        else{ printf("Unable to read file."); }
    }
  return 0;
}
int列表_视图(char*name,char*dob){
printf(“有关人员详细信息,请输入人员姓名:\n”);
FILE*fr=fopen(“/home/bilal/Documents/FILE.txt”,“r”);
printf(“输入您的姓名:”);
如果(scanf(“%50s”,name)!=1){//通过此
perror(“读取时出错!”);//代码
返回0;}
char-ch[100];
int指数=0;

对于(int i=0;i,您需要注意变量的大小。作为复习:

变量的作用域是程序中可以使用变量的部分。因此,作用域描述了程序中标识符的可见性

data
变量在
new_acc
内部本地声明,并且没有返回,这意味着它在函数外部不可见

为了澄清这一点,请考虑您的<代码>清单>代码>数组。您可以在<代码> NeXYACC < /COD>和ListyVIEW < /C>中访问它,尽管不将其传递到任一函数中。这使我相信它是全局声明的(在任何函数之外)。。如果希望

名称
列表视图
中可见,则必须将其设置为全局或从
新建\u acc
返回


注意:我包含的链接还讨论了变量的生存期,这一点同样重要,需要考虑清楚,您是说您遇到了编译器错误吗?我只是想从文本文件中获取名称,如果名称存在于文本文件中,则应允许用户访问。是的,我声明了全局变量列表,但我的观点是第一个函数将名称和DOB保存在文本文件中。因此,我希望注册用户输入他/她的名称,如果该名称存在于文本文件中,则我可以授予访问权限。在全局变量中,所有值都存在于代码中。但我想从文本文件中提取。@BilalKhan您是否已验证数据是否在您执行时写入文本文件ct?它是编写的。是的。这是我正在使用的一个大程序。@BilalKhan哪个变量未声明?我的观点是,第一个函数将名称和DOB保存在文本文件中。因此,我希望注册用户输入他/她的名称,如果该名称存在于文本文件中,那么我可以授予访问权限。在全局变量中,所有值都存在于code.B中但是我想从文本文件中提取。