[英]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.