linux環境Cプログラミングとwindowsの違い
1605 ワード
1.system(「pause」)は使用できません.mypause()関数を自分で書くことができます.
2.システム(「cls」)をシステム(「clear」)に変更
3.getchで文字を表示しない関数は使用できません.自分で関数を書いて端末パラメータを設定して実現するしかありません.
4.getchar()リターンキーは「10」と認識され、値は10である.チェックアウトキーBackspaceはdeleteと認識され、値は127
5.Windowsの下のディレクトリパスは反スラッシュ、linuxの下は正スラッシュ/
6.windows下中国語はGBKコード、linux下はutf-8
7.windowsの下のテキストファイルの行末はrで、linuxの下でただ
8.fflushはstdinをクリアするために使用できません.fpurge(stdin)、setbuf(stdin,NULL)ではありませんこれはバッファを閉じます
#include
#include
void mypause()
{
char ch;
printf("Press Enter to continue...
");
__fpurge(stdin);
while((ch = getchar())!='
' && ch != EOF)
;
}
2.システム(「cls」)をシステム(「clear」)に変更
3.getchで文字を表示しない関数は使用できません.自分で関数を書いて端末パラメータを設定して実現するしかありません.
#include
#include
#include
#include
#include
char getch(int len_max)
{
char ch;
struct termios old_attr, new_attr;
int len = 0;
int res = 0;
if(len < len_max)
{
res = tcgetattr(STDIN_FILENO, &old_attr);
assert(res == 0);
memcpy(&new_attr, &old_attr, sizeof(old_attr));
new_attr.c_lflag &= ~(ICANON | ECHO | ECHOE | ECHOK | ECHONL | ECHOPRT | ECHOKE);
res = tcsetattr(STDIN_FILENO, TCSANOW, &new_attr);
ch = getchar();
++len;
res = tcsetattr(STDIN_FILENO, TCSANOW, &old_attr);
assert(res == 0);
return ch;
}
else
{
printf("Your in put must less than %d", len_max);
return -1;
}
}
4.getchar()リターンキーは「10」と認識され、値は10である.チェックアウトキーBackspaceはdeleteと認識され、値は127
5.Windowsの下のディレクトリパスは反スラッシュ、linuxの下は正スラッシュ/
6.windows下中国語はGBKコード、linux下はutf-8
7.windowsの下のテキストファイルの行末はrで、linuxの下でただ
8.fflushはstdinをクリアするために使用できません.fpurge(stdin)、setbuf(stdin,NULL)ではありませんこれはバッファを閉じます