#include <stdio.h>
typedef struct TESTCASE{
char *before;
}ts;
int main(void) {
ts t[2] = {{"abcd"},
{"abcd"}};
t[0].before[0] = t[0].before[2] = t[0].before[3] = 'b';
printf("%s - %s\n", t[0].before, t[1].before);
return 0;
}
输出
bbbb - bbbb
我在Cygwin中用gcc编译
cc -g test.c -o test
我的问题是,使用什么编译选项,我可以获得bbbb的结果 - abcd?
答案 0 :(得分:5)
答案 1 :(得分:0)
t[0].before[3] = 'b';
会在某些系统上执行细分错误。你不能写成常量字符串。
#include <stdio.h>
typedef struct TESTCASE{
char before[5];
}ts;
int main(void) {
ts t[2] = {{ {'a','b','c','d',0} },
{ {'a','b','c','d',0} }};
t[0].before[0] = t[0].before[2] = t[0].before[3] = 'b';
printf("%s - %s\n", t[0].before, t[1].before);
return 0;
}