如何解决C程序'char *'

问题描述

我在C程序上收到以下警告。它确实运行。但是,如何解决警告?

warning: format specifies type 'char *' but the argument has type 'char (*)[100]' [-Wformat]
            printf("%s\n",&buf);

代码如下:

FILE *fp = fopen(filename,"r");
int len = 0;
char buf[100];

printf("\n sorting \n");
while (fscanf(fp,"%s",buf) != EOF)
{
    printf("%s\n",&buf);
    len++;
}

printf("Sorted\n");

解决方法

此行是错误的:

    printf("%s\n",&buf);

如警告所述,您需要将%schar *参数进行匹配。 buf是一个数组,因此仅在此上下文中使用其名称将导致其衰减为指向其第一个元素的指针-正是您想要的:

    printf("%s\n",buf);

使用&显式将指针传递给您的数组;它将是相同的文字地址,但具有不同的类型,这就是您的警告所表示的。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...