頁:
[1]
關於char的問題
本帖最後由 在那裡 於 2016-6-12 04:55 PM 編輯#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
char ch='█';
char ch1[]="█";
cout << ch << endl;
cout << ch1 << endl;
system("pause");
return 0;
}
輸出結果
i
█
做了一些實驗後我無法理解,究竟為什麼 ch1[]="█" 就可以正常顯示,而 ch='█' 就不行呢?明明兩者的儲存範圍都一樣
但一個能正常運作一個卻不行,讓我百思不得其解……why?
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div> char只有 1 byte ,最多只能表示出255種不同的文字
而我們在螢幕上看到的文字遠遠超過255種
這是因為我們採用了多個 byte 來表示一個字
例如你要的「█」,有可能是 E2 96 88 (UTF-8編碼) 或是 A2 69 (BIG5編碼)
所以對C語言來說,「█」是一個字串,而不是字元 ren1244 發表於 2016-6-12 05:51 PM static/image/common/back.gif
char只有 1 byte ,最多只能表示出255種不同的文字
而我們在螢幕上看到的文字遠遠超過255種
這是因為我們採 ...
那麼我該如何把一個█
寫入一個 char陣列呢? 我猜會用到「█」也許是用來做顯示結果的,可能是迷宮或是踩地雷之類的程式?
我寫一個範例,遇到陣列是1的位置,會顯示█,如果是0,則顯示全形空白。#include <stdio.h>
#include <string.h>
char* show(char *buf,int *A,int m,int n) //mxn 矩陣
{
int i,j;
const char *str[]={" ","█"};
buf='\0';
for(i=0;i<m;++i)
{
for(j=0;j<n;++j)
strcat(buf,str?1:0]); //用strcat來處理
strcat(buf,"\n");
}
return buf;
}
int main()
{
int A={{1,1,0},{0,1,0}};
char buf;
puts(show(buf,A,2,3));
return 0;
}...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> 是要拿來做顯示結果用的沒錯,現在正嘗試寫俄羅斯方塊,打算拿這來做方塊用。
關於樓上這程式有些地方我看不大懂
A 他指向的到底是哪裡? 查看位置測試了一下後它的位置跟 A六個陣列位置只有一個相同。
還有我的顯示出來變成亂碼了......
而頂樓的那個程式顯示出來也變成了亂碼......?原本能正常顯示的。
但不知道為什麼這個貪吃蛇程式(某位大大寫的)卻能正常顯示?我也看不大懂它到底如何將"█"寫入char陣列裡......
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div> .c或.cpp檔案是文字檔,所以檔案有檔案的編碼。
而程式執行時,系統也有它預設的編碼。
當檔案的編碼與系統編碼相同時,它才能正常辨識出符號。
所以如果原本可以,後來不行,那麼就檢查看看你檔案儲存的編碼是Big5還是UTF8。
試試看哪一種可以符合你所期待的。
頁:
[1]