gpt4 book ai didi

C 编程,调用函数

转载 作者:行者123 更新时间:2023-11-30 15:51:42 24 4
gpt4 key购买 nike

我是 C 新手,我正在尝试迭代调用流中的行并检查它是否包含我的搜索字符串或者是否为空。我不知道如何进行此检查,每当我尝试执行此操作时,我都会收到一条警告,指出[警告]指针与整数之间的比较或[警告]赋值使指针来自整数而不进行强制转换。有人可以帮忙吗?谢谢。

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char *argv[]) {

FILE *fpntr;
char *file_pathname, *first_line;

if (argc != 2) {
fprintf(stderr, "usage: %s FILE\n", argv[0]);
return EXIT_FAILURE;
}
file_pathname = argv[1];

if ((fpntr = fopen(file_pathname, "r")) == NULL ) {
fprintf(stderr, "Error opening file %s: %s\n", file_pathname, strerror(errno));
return EXIT_FAILURE;
} else {
grep_stream();
fclose(fpntr);
}
return EXIT_SUCCESS;
}

int grep_stream(FILE *fpntr, char *string, char *file_pathname) {
//warning is on next line
while ((? = get_next_line(fpntr)) == NULL ) {
perror("Error reading line");
exit(EXIT_FAILURE);
}
elseif()
{
printf("First line in : %s \n %s", file_pathname, string);
}

}

char *get_next_line(FILE *fpntr) {
char *buff = malloc(101);
int pos = 0;
int next;

while ((next = fgetc(fpntr)) != '\n' && next != EOF) {

buff[pos++] = next;

}
buff[pos] = '\0';
if (buff != NULL ) {
return buff;
} else
return NULL ;

}

最佳答案

请记住,C 代码是自上而下编译的。读取 while 行时尚未声明函数 get_next_line

get_next_line 的定义移动到 main 的定义之前,或者通过以下方式向前声明它:

char *get_next_line(FILE *fpntr);

事先。您收到警告而不是错误的原因是未声明的函数被假定返回 int 并且不对它们的参数做出任何假设。也就是说,它们的类型为 int()

此外,为了您自己以及那些将回答您问题(或与您合作)的人,请正确设置代码格式。

关于C 编程,调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14928442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com