項目場景:
學習過程遇見的問題,出現(xiàn)兩個警告,一個是關于C6054:可能沒有為字符串“name”添加字符串零終警告,另一個是關于C6064:缺少“scanf_s”的整型參數(shù)(對應于轉換說明符“2”,因為篇幅太長,本片只介紹C6064:缺少“scanf_s”的整型參數(shù)(對應于轉換說明符“2”,警告C6054請移
警告C6054
問題描述
// talkback.c -- 演示與用戶交互
#include <stdio.h>
#include <string.h> // 提供strlen()函數(shù)的原型
#define DENSITY 62.4 // 人體密度(單位:磅/立方英尺)
int main()
{
float weight, volume;
int size, letters;
char name[40] = {0}; /* 聲明字符串name, name是一個可容納40個字符的數(shù)組 */
printf("Hi! What's your first name?\n");
scanf_s("%s", name);
printf("%s, what's your weight in pounds?\n", name);
scanf_s("%f", &weight);
size = sizeof name;
letters = strlen(name); /* strlen()函數(shù)的使用 */
volume = weight / DENSITY;
printf("Well, %s, your volume is %2.2f cubic feet.\n", name, volume);
printf("Also, your first name has %d letters,\n", letters);
printf("and we have %d bytes to store it.\n", size);
return 0;
}
以上是源代碼,大家可以試著運行,我調(diào)試并沒有報錯,并也出現(xiàn)了彈窗,但運行的結果視乎純在問題,判斷不正常情況理由。程序目的是實現(xiàn)與用戶的交互,代碼中使用兩次scanf_s()輸入函數(shù),所以用戶應當輸入兩次,實現(xiàn)兩次交互效果,請看下面調(diào)試輸出圖:,
正常情況應該如下:
所以還一部內(nèi)容哪去了???關閉彈窗,編譯出現(xiàn)警告
原因分析:
//scanf_s("%s", name);? ? 對于變量name這個字符串,沒有傳入字符串長度的參數(shù),因為在調(diào)用scanf_s()函數(shù)時,如果必須提供一個數(shù)字以表明最多讀取多少位字符。比如:char d[20];寫成scanf_s("%s",d,20);才是正確的,有這個參數(shù)20使準確性、安全性提高。
解決方案:
?修改完后,運行結果如下圖:
-------------------------------------分------------割-----------線---------------------------------------------------------
補充內(nèi)容:在有些時候并不需要傳入字符串長度的參數(shù)
像scanf_s()函數(shù)要求輸入的類型是%c(單個字符)、要求輸入的類型是%d(十進制整數(shù))、要求輸入的類型為%f(浮點型).....等等。換句話,只有當函數(shù)要求傳入的類型是%s(字符串)時,才要需要傳入字符串長度的參數(shù)
像下面的這段代碼:
#include <stdio.h>
int main(void) /* 函數(shù)原型,主函數(shù) */
{
char zifu; /* 聲明字符類型變量名為zifu */
printf("請輸入你想輸入的字符:");
scanf_s("%c", &zifu);
printf("你輸入的字符是: %c,它的代碼編號是:%d", zifu, zifu); /* ①打印字符②打印十進制整數(shù) */
return 0;
}
到此,問題已經(jīng)解決,歡迎在評論區(qū)交流,若有不對地方,請指正,共勉
另外,如果分不清scanf()和scanf_s(),請看鏈接,博主也有些地方引用其中內(nèi)容文章來源:http://www.zghlxwxcb.cn/news/detail-505825.html
http://t.csdn.cn/3JxhK文章來源地址http://www.zghlxwxcb.cn/news/detail-505825.html
到了這里,關于C6064:缺少“scanf_s”的整型參數(shù)(對應于轉換說明符“2”的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!