如何调用另一个函数来获取字符串数据

时间:2014-08-21 01:55:22

标签: c pointers

#include<stdio.h>
#include<string.h>
#include<fstream>
#include<malloc.h>

#pragma warning(disable : 4996)

typedef struct pre_load{
    char *pre_ip;
    int data2;
    char data3;
}pre_load;
int a(pre_load pre){
    char *test;
    test = (char*)calloc(1, 256);
    strcpy(test, "test127.0.0.0.1");
    pre.pre_ip = (char*)calloc(1, 256);
    strcpy(pre.pre_ip, test);
    return 0;
};
int main(){
    pre_load pre;
    pre.pre_ip = (char*)calloc(1, 256);
    a(pre);

    printf("%s", pre.pre_ip);
    system("pause");
}

我添加此功能来测试项目

为什么没有任何错误我什么都没有? 这让我困惑了很长时间。 我想我应该再次研究一下指针。

1 个答案:

答案 0 :(得分:2)

int a(pre_load pre)

您按值传递pre,因此您在函数a中修改的任何内容都不会影响pre中的main。相反,声明函数传递指针:

void a(pre_load *pre){
    char *test = calloc(1, 256);
    strcpy(test, "test127.0.0.0.1");
    pre->pre_ip = calloc(1, 256);
    strcpy(pre->pre_ip, test);
    free(test);
};

并将其传递给main

pre_load pre;
a(&pre);

请注意,原始代码中存在内存泄漏。