Skip to content

Instantly share code, notes, and snippets.

@mikigom
Last active June 10, 2017 21:19
Show Gist options
  • Select an option

  • Save mikigom/2fca5f215814838b3fbc9cb2e68d8c0c to your computer and use it in GitHub Desktop.

Select an option

Save mikigom/2fca5f215814838b3fbc9cb2e68d8c0c to your computer and use it in GitHub Desktop.

Revisions

  1. mikigom revised this gist Jun 10, 2017. 1 changed file with 9 additions and 7 deletions.
    16 changes: 9 additions & 7 deletions return_ptr.c
    Original file line number Diff line number Diff line change
    @@ -19,32 +19,34 @@ struct nameTag * wrong_getname(void){
    return p;
    }

    // (*p).fname ======= p->fname
    struct nameTag * right_getname(void){
    struct nameTag *p = (struct nameTag *)malloc(sizeof(struct nameTag));
    printf("Please enter first name:");
    fgets((*p).fname, 20, stdin);
    (*p).fname[strcspn((*p).fname, "\n")] = '\0';
    fgets(p->fname, 20, stdin);
    p->fname[strcspn(p->fname, "\n")] = '\0';
    printf("Please enter last name:");
    fgets((*p).lname, 20, stdin);
    (*p).lname[strcspn((*p).lname, "\n")] = '\0';
    fgets(p->lname, 20, stdin);
    p->lname[strcspn(p->lname, "\n")] = '\0';
    return p;
    }

    int main(int argv, char * argc){
    int i;
    struct nameTag * local_name_ptr[5];


    for(i = 0; i < 5; ++i)
    local_name_ptr[i] = wrong_getname();
    for(i = 0; i < 5; ++i)
    printf("i-index first name : %s, last name : %s\n", (*local_name_ptr[i]).fname, (*local_name_ptr[i]).lname);
    printf("i-index first name : %s, last name : %s\n", local_name_ptr[i]->fname, local_name_ptr[i]->lname);

    for(i = 0; i < 5; ++i)
    local_name_ptr[i] = right_getname();
    for(i = 0; i < 5; ++i)
    printf("i-index first name : %s, last name : %s\n", (*local_name_ptr[i]).fname, (*local_name_ptr[i]).lname);
    printf("i-index first name : %s, last name : %s\n", local_name_ptr[i]->fname, local_name_ptr[i]->lname);
    for(i = 0; i < 5; ++i)
    free((local_name_ptr[i]));

    return 0;
    }
  2. mikigom revised this gist Jun 10, 2017. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions return_ptr.c
    Original file line number Diff line number Diff line change
    @@ -43,6 +43,8 @@ int main(int argv, char * argc){
    local_name_ptr[i] = right_getname();
    for(i = 0; i < 5; ++i)
    printf("i-index first name : %s, last name : %s\n", (*local_name_ptr[i]).fname, (*local_name_ptr[i]).lname);
    for(i = 0; i < 5; ++i)
    free((local_name_ptr[i]));

    return 0;
    }
  3. mikigom created this gist Jun 10, 2017.
    48 changes: 48 additions & 0 deletions return_ptr.c
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,48 @@
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>

    struct nameTag{
    char fname[20]; char lname[20];
    };

    struct nameTag * wrong_getname(void){
    struct nameTag newname;
    struct nameTag *p;
    printf("Please enter first name:");
    fgets(newname.fname, 20, stdin);
    newname.fname[strcspn(newname.fname, "\n")] = '\0';
    printf("Please enter last name:");
    fgets(newname.lname, 20, stdin);
    newname.lname[strcspn(newname.lname, "\n")] = '\0';
    p = &newname;
    return p;
    }

    struct nameTag * right_getname(void){
    struct nameTag *p = (struct nameTag *)malloc(sizeof(struct nameTag));
    printf("Please enter first name:");
    fgets((*p).fname, 20, stdin);
    (*p).fname[strcspn((*p).fname, "\n")] = '\0';
    printf("Please enter last name:");
    fgets((*p).lname, 20, stdin);
    (*p).lname[strcspn((*p).lname, "\n")] = '\0';
    return p;
    }

    int main(int argv, char * argc){
    int i;
    struct nameTag * local_name_ptr[5];

    for(i = 0; i < 5; ++i)
    local_name_ptr[i] = wrong_getname();
    for(i = 0; i < 5; ++i)
    printf("i-index first name : %s, last name : %s\n", (*local_name_ptr[i]).fname, (*local_name_ptr[i]).lname);

    for(i = 0; i < 5; ++i)
    local_name_ptr[i] = right_getname();
    for(i = 0; i < 5; ++i)
    printf("i-index first name : %s, last name : %s\n", (*local_name_ptr[i]).fname, (*local_name_ptr[i]).lname);

    return 0;
    }