1
#include <stdio.h>
#define STR_BUF 10000
#define STR_MATCH 7
void mystrncpy(char* s, char* t, int n) {
while(*s++ = *t++ && n-- > 0);
}
int main() {
int result;
char str_s[STR_BUF] = "not so long test string";
char buf_1[STR_BUF];
mystrncpy(buf_1, str_s, STR_MATCH);
printf ("buf_1 (mystrncpy, 7 chars): %s\n", buf_1);
return 0;
}
當我運行它,什麼都沒有發生我的單行strncpy有什麼問題:while(* s ++ = * t ++ && n--> 0);?
[email protected]:~/tmp$ gcc myncpy.c -o myn&&./myn
buf_1 (mystrncpy, 7chars):
除了任何錯誤,它會在源字符串中看到空字符時停止。 'strncpy'用零個或多個空字符填充目標。另見[我對這個話題的咆哮](http://the-flat-trantor-society.blogspot.com/2012/03/no-strncpy-is-not-safer-strcpy.html)。 –
「*我的單行問題出現了什麼問題?*」很難首先閱讀出錯信息。 – alk