簡體   English   中英

函數'scan_s'的隱式聲明[-Wimplicit-function-declaration]

[英]Implicit declaration of function 'scan_s' [-Wimplicit-function-declaration]

我一直在尋找其他問題,但沒有一個解決方案有效,所以我會問自己一個問題。

我正在Linux虛擬機上工作,無法編譯我的代碼,這是我的包含文件,編譯器收到的錯誤及其所引用的代碼:

錯誤:

linux.c:156:11:警告:函數'scan_s'的隱式聲明[-Wimplicit-function-declaration]

#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include "ctype.h"

scanf_s("%[^\n]s", filename, maxFilename);

scanf_s是您的編譯器可能不支持的邊界檢查擴展的一部分。 使用#ifdef __STDC_LIB_EXT1__來查看您的庫/實現是否支持它-如果不支持,則退回到使用類似

char fmt[16];
sprintf(fmt, "%%%d[^\n]", maxFilename);
scanf(fmt, maxFilename, filename);

要么

fgets(filename, maxFilename, stdin);
if (char *p = strchr(filename, '\n')) *p = '\0';

代替。

請注意,示例示例格式字符串中的s毫無意義,將不匹配任何內容(任何s都將由%[^\\n]吸收,因為它不是換行符。

據我所知,只有Microsoft編譯器支持此擴展。

暫無
暫無

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

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