文字列内でアンダースコアを使用しようとしましたが、コンパイラがchar配列に割り当てるバイト数を減らし、終了文字('\ 0')を実行するように見えます。
これを引き起こしているのは何ですか?アンダースコア文字をエスケープする方法はありますか?
ありがとう。
詳細については、次のコードを参照してください。
code:
#include<stdio.h>
#define ARRSIZE 6
char str_ex[][ARRSIZE] = {"aaaa", "bbbb_bbbb", "cccc", "dddd", "ffff_ffff", "eeee"};
int main(void)
{
int i;
for(i=0; i<ARRSIZE; i++)
printf("%s\n", str_ex[i]);
return 0;
}
compile:
user@ubuntu:~/test$ gcc -g test.c -o test -Wall -ansi
test.c:4:1: warning: initializer-string for array of chars is too long [enabled by default]
test.c:4:1: warning: (near initialization for ‘str_ex[1]’) [enabled by default]
test.c:4:1: warning: initializer-string for array of chars is too long [enabled by default]
test.c:4:1: warning: (near initialization for ‘str_ex[4]’) [enabled by default]
output:
user@ubuntu:~/test$ ./test
aaaa
bbbb_bcccc
cccc
dddd
ffff_feeee
eeee