| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 758 人关注过本帖
标题:【求解】简单程序这样都出错
只看楼主 加入收藏
a9517495424
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:305
专家分:139
注 册:2011-7-20
结帖率:100%
收藏
 问题点数:0 回复次数:12 
【求解】简单程序这样都出错
# include <stdio.h>
int main(void)
{
    int i,j,k;
    printf("\n");
    for(i=1;i<5;i++)    /*以下为三重循环*/    在这行里出错!!!
         for(j=1;j<5;j++) 
          for (k=1;k<5;k++)
           {
            if (i!=k&&i!=j&&j!=k)    /*确保i、j、k三位互不相同*/
                printf("%d,%d,%d\n",i,j,k);
           }
    return 0;
}

 error C2018: unknown character '0xa1'
搜索更多相关主题的帖子: void include 
2011-07-21 23:53
a9517495424
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:305
专家分:139
注 册:2011-7-20
收藏
得分:0 
原来要自己亲手打进编译器才行啊  复制 粘贴是出错的。   新人要注意了
2011-07-22 00:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
那行末尾有個漢字空格,準確地說是一連串内碼為0xa1的字符。

[ 本帖最后由 TonyDeng 于 2011-7-22 00:07 编辑 ]
收到的鲜花
  • a95174954242011-07-22 11:56 送鲜花  3朵   附言:我很赞同

授人以渔,不授人以鱼。
2011-07-22 00:03
junxting
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-7-5
收藏
得分:0 
所噶,顶~
2011-07-22 09:13
a9517495424
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:305
专家分:139
注 册:2011-7-20
收藏
得分:0 
回复 3楼 TonyDeng
哦~谢谢了,原来汉字空格与英文空格不同的。
2011-07-22 11:55
为我留住记忆
Rank: 4
来 自:北京
等 级:业余侠客
帖 子:130
专家分:226
注 册:2011-4-30
收藏
得分:0 


  飘过。。。为了分。。
收到的鲜花
  • a95174954242011-07-22 21:07 送鲜花  3朵   附言:要就给你好了

学习c是为了自己更强大。。。
2011-07-22 14:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用a9517495424在2011-7-22 11:55:54的发言:

哦~谢谢了,原来汉字空格与英文空格不同的。


漢字空格與英文空格當然不同啦,這是學C、彙編類語言之前應該準備的知識。數據的儲存機制、字符串的識別、代碼表、尋址方式等等,都要先瞭解。

授人以渔,不授人以鱼。
2011-07-22 14:37
a9517495424
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:305
专家分:139
注 册:2011-7-20
收藏
得分:0 
回复 7楼 TonyDeng
不会这么讲究吧
2011-07-22 21:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
要的,用C之類,就是爲了處理這種底層問題。高層次應用,沒必要用C語言的。比如你要處理文本,如何知道那是英文還是漢字呢?你知道,漢字是兩個字節組成的,如果你的處理程序把漢字從中間分割了,就出現亂碼,你見過這種現象嗎?當你用getch()從鍵盤讀入一個字符,它僅僅是一個英文字符還是一個漢字的前半個字符?如果是後者,你就必須把下一個字符也讀進來,與前一個結合為一體,如果不這樣做,鍵盤緩衝區就會遺留字符未處理,你忽略了這點,去做別的事,出錯是可以預期的。這樣的事,你不暸解行嗎?

爲什麽現代Windows全部採用unicode編碼字符串?就是爲了解決上面這種漢字編碼需要分開判斷問題的,但你們現在學的C語言教科書,都仍然在講ANSI字符串的處理辦法,什麽scanf()、printf()之類,都不能再在Windows下運行,這是你將來寫Windows程序時會踫到的問題。看你們還敢不敢大量使用這類庫函數。

[ 本帖最后由 TonyDeng 于 2011-7-22 21:21 编辑 ]

授人以渔,不授人以鱼。
2011-07-22 21:20
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你1樓的問題,就是C編譯器在處理你的程序文本時踫到的,它逐個字符讀入那些字符,與規定的語句表比對,進行編譯處理,讀到一個編碼為0xa1的字符,這個字符的高位為1,按照編碼法則,它應該是雙字節編碼字符串的一個字符,亦即所謂的漢字字符,但問題是編譯器發現這樣的字符沒有被雙引號括起來,説明它不能被解釋為程序中的字符串常量,但C語言語法表中沒有任何這種字符存在,於是它無法繼續編譯下去,只能報出錯誤信息,中斷編譯過程。這就是爲什麽會這樣的解釋,你必須知道原因,才說得上解決問題,你看編譯器給出的錯誤信息,已經指出在第5行存在“不認識的字符0xa1”,那麽你就應該去看第5行,找0xa1的字符到底是哪個,你看不出來是吧?如果懂得我上面說的那些原理,就知道怎麽查,否則茫無頭緒。

授人以渔,不授人以鱼。
2011-07-22 21:32
快速回复:【求解】简单程序这样都出错
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024792 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved