-2
バイナリ形式の文字列を出力しようとしていますが、最初の実行では*s << = 1;
にセグメント化エラーが発生します。
間違いはどこですか?左の算術シフトによるセグメンテーションフォールト
#include <stdio.h>
#include <uchar.h>
#include <locale.h>
#include <string.h>
int main() {
setlocale(LC_CTYPE, "");
char *s = u8"\uD798";
int c = (sizeof *s) * strlen(s);
for(int i = 0; i < 8 * c; i++) {
putchar(*s & 0x80 ? '1' : '0');
fflush(stdout);
if((i + 1) % 8 == 0 && i != 0) {
putchar('\n');
s++;
}
*s <<= 1; //segfault here
}
printf("\n%s - %i\n", u8"\uD798", c);
return 0;
}
'char s [] = u8" \ uD798 ";'文字列を読み書き可能メモリに格納する – Ctx
リテラルは変更できません。 – CiaPan
'const char * s = u8" \ uD798 ";"コンパイラは実行時ではなくエラーをキャッチすることができます。 – Clifford