我知道,stackoverflow上有一些解决方案。但我不知道为什么不开展一项工作。
char *ink[90]
strcpy(ink, "hi");
printf("stepiii %c \n",ink[0] );
printf("ascii %d\n",ink[0] );
而不是" ascii 104"返回错误值,如
" ascii 26984"
我做错了什么?
答案 0 :(得分:3)
在您的代码中,
char *ink[90]
错了。您不需要指针数组,如片段的其余部分所示。将其更改为
char ink[90]= {0};
如果您想知道以前的输出,那么该代码会调用undefined behavior。因此,输出基本上没有意义,绝不能被信任。
答案 1 :(得分:2)
您正在创建一个指针数组并将字符复制到它。你需要一个 var bsMSG = function (msg, type, seprator) {
html = '';
msg = (msg instanceof Array ?msg:[msg]);
type = type || 'success';
seprator = seprator || '<br/>';
b = '';
for (i = 0; i < msg.length; i++) {
html += b + msg[i];
b = seprator;
}
html = "<div class='alert alert-" + type + "'>" + html + "</div>";
return html;
};
// usage
if (response.type == "error") {
$('#msgs').html(bsMSG(response.text,'danger'));
}else{
$('#msgs').html(bsMSG(response.text'));
}
的数组并将字符复制到它,就像这样
char
您所遇到的错误是因为char ink[90]
strcpy(ink, "hi");
printf("stepiii %c \n", ink[0]);
printf("ascii %d\n", ink[0]);
是数组中第一个指针的地址,您使用ink[0]
初始化数组,这会导致不兼容指针类型警告,启用编译警告以避免这种情况。
它在您的代码中的方式调用未定义的行为,您的程序可能会崩溃或任何可能发生的事情。印刷值没有意义。