我用C++編碼,真的很簡單的東西。'函數的參數太少'char * strncpy(char *,const char *,size_t)'是什麼意思?
using namespace std;
int main(){
char cName[30], cFirst[15], cSur[30];
cout << "Enter your name: " << endl;
cin.getline(cName, 29);
for(int i = 0; i < 29; i++)
if(cName[i] == ' ')
break;
strncpy(cFirst, cName, i);
cFirst[i] = '\0';
strncpy(cSur,cName + i + 1);
cSur[i] = '\0';
cout << cSur << endl;
return 0;
}
然而,程序停止運行時編譯strncpy(cFirst, cName, i);
,我得到這個錯誤信息「參數太少函數 '字符*函數strncpy(字符*,爲const char *,爲size_t)'。有人能解釋我做錯了什麼嗎?
確定錯誤不在這行'strncpy(cSur,cName + i + 1);'? –
錯誤信息不清楚嗎? –
除了編譯器錯誤(由於沒有將足夠的參數傳遞給strncpy引起),如果某人的名字長於15個字符,該程序具有未定義的行爲(即可能會出現段錯誤) - cName僅包含15個字符,但在在線''strncpy(cFirst,cName,i)','i'可以大於15. –