变量从函数返回中获取变量值

时间:2019-10-19 10:35:38

标签: c

我有一个函数可以更准确地读取文件的第一行内容,测量文件的长度并返回。最初,该功能打印了读取的内容,但我将其修改为“返回缓冲区”

这是我的功能:

char *get_process() {
    int len = 0;
    FILE *fp;
    char c;
    char *buffer = NULL;
    fp = fopen("input.txt", "r");
        if (fp == NULL) {
            return 1;
        }
        while((c = fgetc(fp)) != EOF) {
            if (c == '\n') {
                break;
            }
            len++;
    buffer = (char *) malloc(sizeof(char) * len);
    fseek(fp, 0, SEEK_SET);
    fread(buffer, sizeof(char), len, fp);
    fclose(fp);
    return buffer;
}

char *get_process() { int len = 0; FILE *fp; char c; char *buffer = NULL; fp = fopen("input.txt", "r"); if (fp == NULL) { return 1; } while((c = fgetc(fp)) != EOF) { if (c == '\n') { break; } len++; buffer = (char *) malloc(sizeof(char) * len); fseek(fp, 0, SEEK_SET); fread(buffer, sizeof(char), len, fp); fclose(fp); return buffer; }

input.txt的内容类似于/etc/config.conf

现在我的问题是我想做的就是将此函数返回的值分配给我在main()函数中使用的变量。

我做了什么我添加到我的主要职能:

char * PID = get_process();

但是我在编译时遇到以下错误: :760:警告:返回值使指针从整数开始而没有强制转换

我总是像往常一样做错事。 那是什么?

1 个答案:

答案 0 :(得分:3)

如果您的fp==NULL,则您的功能将return 1;。这就是为什么您收到此警告。相反,您可以return NULL;return nullptr;指出出问题了。

[编辑] 如果您在问题中添加的代码正是您在程序中编写的代码,那么您还会遇到另一个问题,因为没有放置while循环关闭括号