簡體   English   中英

如何修復 C 程序“char *”上的編譯警告

[英]How to fix a compiling warning on a C program '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);

使用&顯式地將指針傳遞給您的數組; 它將是相同的文字地址,但具有不同的類型,這就是您的警告所說的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM