我在兩臺不同的計算機上使用以下功能。一臺電腦運行Ubuntu和另一臺OS X.該功能適用於OS X,但不適用於Ubuntu。c snprintf用於連接字符串
#include <stdio.h>
#define MAXBUF 256
char *safe_strncat(char *dest, const char *src, size_t n) {
snprintf(dest, n, "%s%s", dest, src);
return dest;
}
int main(int argc, const char * argv[]){
char st1[MAXBUF+1] = "abc";
char st2[MAXBUF+1] = "def";
char* st3;
printf("%s + %s = ",st1, st2);
st3 = safe_strncat(st1, st2, MAXBUF);
printf("%s\n",st3);
printf("original string = %s\n",st1);
}
編譯並在Ubuntu運行
GCC concat_test.c -o concat_test
./concat_test
ABC DEF + = DEF
原始字符串= DEF
編譯並在Xcode在OS X上運行
ABC + DEF = ABCDEF
原始字符串= ABCDEF
- 爲什麼在Mac上,而不是在Ubuntu這項工作?
- 它應該在Ubuntu上運行嗎?
- 它應該在Mac上工作嗎?
- 我可以發誓它曾經在Ubuntu上工作,直到最近,但我不知道會改變什麼使它停止工作?
- 編譯器設置是否與這個工作有關?
是strncat函數一個很好的選擇? –