这是我的功能:
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:警告:返回值使指针从整数开始而没有强制转换
我总是像往常一样做错事。 那是什么?
答案 0 :(得分:3)
如果您的fp==NULL
,则您的功能将return 1;
。这就是为什么您收到此警告。相反,您可以return NULL;
或return nullptr;
指出出问题了。
[编辑] 如果您在问题中添加的代码正是您在程序中编写的代码,那么您还会遇到另一个问题,因为没有放置while循环关闭括号