繁体   English   中英

变量从 function 返回变量值

[英]Variable taking variable value from a function return

我有一个 function 更准确地读取文件的第一行内容,测量它找到的内容的长度并返回它。 最初 function 打印了它读取的内容,但我将其修改为“返回缓冲区”

这是我的 function:

 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

现在我的问题是我想做的是将这个 function 返回的变量分配给我在 main() function 中使用的变量。

我做了什么我已经添加到我的主要 function 中:

字符 *PID = get_process();

但是我在编译时出现以下错误::760:警告:返回使指针从 integer 没有强制转换

我当然像往常一样做错了什么。 但它是什么?

如果您的fp==NULL那么您的 function 将return 1; . 这就是您收到此警告的原因。 相反,您可以return NULL; return nullptr; 表示出现问题。

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

现在,在提取部分代码进行复制并对其进行编译后,除了一件事之外,一切几乎都可以正常工作。 include.txt 内容是 /1.1.1.1/1.1.1.1 运行程序后它只打印前导 /

    #include <stdio.h>
    #include <stdlib.h>

    char *get_process() {
    int len = 0;
    FILE *fp;
    char c;
    char *buffer = NULL;
    fp = fopen("include.txt", "r");
        if (fp == NULL) {
            return NULL;
        }
        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;
}
}

int main(int ac, char **av)
{
  char *comment;
  char *PID = get_process();
  printf("%s\n", PID);
}

它应该打印/1.1.1.1/1.1.1.1。 请再努力一点帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM