私は2つの異なるコンピュータで次の機能を使用しています。 1台のコンピュータがUbuntuと他のOS Xを実行しています。この機能はOS Xでは動作しますが、Ubuntuでは動作しません。文字列concatに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
コンパイルおよびOS XでXcodeで実行
ABC + DEF = ABCDEF
元の文字列= ABCDEF
- なぜMac上ではなくUbuntuの上でこの作品?
- Ubuntuで動作するはずですか?
- Macで動作するはずですか?
- 私は最近までUbuntuで動作することを誓っていたかもしれませんが、動作を止めるために何が変わったのでしょうか?
- コンパイラ設定はこの作業と関係がありますか?
はstrncatです。 –