gpt4 book ai didi

c - 在 C 中使用 strlen 时发出警告

转载 作者:太空宇宙 更新时间:2023-11-04 06:24:18 25 4
gpt4 key购买 nike

我是 C 编程的新手。我正在尝试逐行从文件中获取输入并打印每行的长度。这是我的代码-

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

int main()
{

char name[100];
printf("Enter file name\n");
scanf("%s",name);



FILE * input;
input=fopen(name,"r");

char line[100];
fscanf(input,"%s",line);

while(!feof(input))
{

printf("%d\n",strlen(line));
fscanf(input,"%s",line);
}


return 0;
}

这是我的输入文件-

172.24.2.1
172.24.2.225
172.17.4.41
172.24.4.42
202.16.112.150
172.24.152.10

这是正确打印每行的长度。但是在编译期间我收到这个警告-

In function ‘main’:
main.c:24:4: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘size_t’ [-Wformat=]
printf("%d\n",strlen(line));

所以我的问题是,虽然我的输出是正确的,但为什么我会收到这个警告,我该如何解决这个问题?提前致谢。

最佳答案

函数 strlen 返回类型为 size_t 的对象(参见 ISO 9899:2011§7.24.6.3)。您需要指定传递给 printf 的参数的类型为 size_t,而不是 int。您可以通过添加 z 长度修饰符(参见 ISO 9899:2011§7.21.6.1/7)来指定 size_t 类型的对象。您还应该使用 u 格式说明符,因为 size_t 是无符号类型。

printf("%zu\n",strlen(line));

关于c - 在 C 中使用 strlen 时发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29170169/

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