cygwinのgccで正常にコンパイルできない。
cygwinのvimで、以下のプログラムを書きました。
-------------------------------------------------------------
#include <stdio.h>
int main(void)
{
int no;
printf("Please input something:");
scanf("%d", &no);
printf("It is %d that you input it:\n", no);
return (0);
}
-------------------------------------------------------------
それからgccでコンパイルしました。
コマンドは以下の通りです。
$ gcc test.c
すると以下のエラーが出ました。
test.c:10:9: warning: unknown escape sequence: '\033'
このようにコンパイルできない状態です。
どのようにすると正常にコンパイルできるようになるでしょうか?
No.6ベストアンサー
- 回答日時:
補足です。
エディタはvimって書いてありましたね。でしたら、次のように打ってから保存してください。
行頭の「:」からです。
:set fileencoding=cp932
うまく動かないようなら、CygwinのSetupでlibiconvがインストールされてるか確認してみてください
参考URL:http://www.kawaz.jp/pukiwiki/?vim
返事が遅れて申し訳ありません。
ありがとうございます。
おかげさまで解決しました。
vimrcの"set fileencoding"の項目をcp932にすることで解決しました。
No.5
- 回答日時:
どっかに制御コードが入った、などは、テキストを見ただけでは見つけにくと思います。
そういうときは、バイナリとしてどうなってるかをダンプするとわかりやすいです。
#2さんの言う通り、Cygwin(やその他unix系)ではodというコマンドを使います。
-c オプションを付けると、テキストとみなせる箇所はその文字として表示しますので、今回のようなテキストファイルのおかしい箇所を探すのに有効です。
実行方法は「od -c ファイル名」
さて、今回の場合ですが、実行結果から、\がおかしいらしいことがわかります。
で、円記号/バックスラッシュ、\033(ESC)、JとB、というキーワードでピンときたのですが....od -cでの円記号の周辺が
033 ( J \ 033 ( B
こんな感じになってませんか?
文字コードには、円記号とバックスラッシュとを分けているものと、同一のコードでどちらか一方だけを使っているものがあります。
unicodeや西欧用のISO-8859-1等は前者です。 0x5cがバックスラッシュ, 0xa5が円記号です
JISやShift-JISは後者で0x5cに円記号を使っています。
ASCIIは後者で0x5cにバックスラッシュを使っています。
前者を扱えるエディタでは、円記号とバックラッシュが混在したテキストを書くことができます。
では、そんなテキストを、区別のない文字コードで保存しようとしたときどうするか?
1)元の使い分けが崩れるのに目を瞑って、保存する文字コードに統一にする
円記号とバックスラッシュは共に0x5cになります。
2)元の使い分けをなるべく保存するように工夫する
その方法として、円記号は「JISの0x5c」バックスラッシュは「ASCIIの0x5c」と表現する、というのがあります。
そこで、参考URLのISO-2202-JPのところを見ると
ESC ( J は「以降はJISローマ字として解釈する」
ESC ( B は「以降はASCIIとして解釈する」
という意味だとわかります。つまり、円記号を円記号として保存しようとした結果だということです。
対策ですが、Shift-JISかEUCで保存する、というのが簡単だと思います。
ところで、Cygwin上のエディタ使っててそんな風になった覚えがないのですが....どんなエディタ使ってます?
参考URL:http://mikeneko.creator.club.ne.jp/~lab/kcode/en …
No.4
- 回答日時:
printf("It is %d that you input it:\n", no);
でのエラーだと思いますが、”\n”の前のコロンが問題なのでは・・・。ピリオドならば、そういうことがおきないような気がします。
それか、半角バックスラッシュ(Windowsだと使えない場合あり)(Linuxだと普通に使える、というか、こっちを使わなければならない)で書き換えてみてください。
この回答への補足
間違えてコロンにしてました。
しかしそこを直しても何も変化はありませんでした。
それと半角バックスラッシュを打とうとするとWindowsだと"\"になってしまいます。
No.3
- 回答日時:
上のプログラムを実際にコンパイルしてみましたが、特にエラーは出なかったです。
ただ、そのエラー?にwarningってあると思いますが、あくまで警告なので、実行ファイルができていると思います。lsコマンドで、a.outがあればコンパイルできているはずですから。
あ、確かにできてます。ありがとうございます。
しかし"\"にあたる部分が文字化けしているようです。
これを取ったら正常になったので、原因は"\"にあるのでしょうか。
"\"をつけてエラーが出た場合の実行結果:
$ ./a
Please input something:123
It is 123 that you input itJBn
"\"がなぜか"JB"になってます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# 3×3のラテン方陣をつくるプログラムを作成したのですが、(↓) #include <stdio.h> 5 2023/07/10 01:53
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# C言語: ポインタ 5 2022/06/01 08:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
C言語をコンパイルするとコンピ...
-
実行後にコンパイルに失敗しま...
-
ヘッダーファイル『windows.h』...
-
[COBOL] ソースの復帰
-
ビープ音が鳴りません・・・
-
math.hに含まれる関数が使えない
-
同じEXE・同じファイルで解析結...
-
「逆コンパイル」ってできるん...
-
共有ライブラリの内容確認について
-
メモリへの負荷
-
C言語のグローバル変数の初期...
-
C#で char型とstring型の比較で...
-
バスエラーとは?
-
すべてのリビルド: 0 正常、 0 ...
-
c言語です コンパイルした時に...
-
Verilog_HDLでのdefineとifdef
-
自作DLLの中身を暗号化
-
#defineとconstについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
共有ライブラリの内容確認について
-
シリアル通信の受信待ちについて
-
C#で char型とstring型の比較で...
-
64ビットのlinuxで32ビットメモ...
-
Verilog_HDLでのdefineとifdef
-
math.hに含まれる関数が使えない
-
自作DLLの中身を暗号化
-
C言語で作ったらWindowsでもMac...
-
実行後にコンパイルに失敗しま...
-
lhafileをインストールしたい
-
c言語です コンパイルした時に...
-
ビープ音が鳴りません・・・
-
すべてのリビルド: 0 正常、 0 ...
-
gcc バージョン違いによるコン...
-
Cのコンパイルでコメントアウト...
-
CLRアプリと通常のアプリとの違い
-
「インクルードファイル 'pthre...
-
MVSマシンで0C7でABENDしたので...
おすすめ情報