Cに関するFohteのブックマーク (4)

  • curses による端末制御

    curses による端末制御 端末とは,コンピュータの基的な機能 (キーボードから命令を受け取り,画面に文字を描く機能) を実現するためのハードウェアやソフトウェアのことである. コマンドラインの入力に普段使っているアプリケーション, たとえば, Linux の「GNOME 端末(gnome-terminal)」や MacOSX の「ターミナル」等は, 端末ソフトウェアの一種. これまでのC言語プログラムでは,標準ライブラリの入出力関数 printf( ) と scanf( ) 等を利用して, 端末の入出力を実行してきた. しかし,これらの関数では,一行単位でしか入出力できないし, 白黒でしか表示できない,等の制約が多かった. 「なーんだC言語では,まったく面白味のないプログラムしか作れないのかー」 いや,それは誤解だ. 端末自身は,キーボードや画面をより自由自在に制御する機能をもってお

    Fohte
    Fohte 2015/12/07
  • 関数内で宣言した配列変数をreturnしてはいけない - Gobble up pudding

    C言語では関数内で宣言した配列変数を素直にreturnする方法がありません。 知らないとこんなコードを書きがちですが、 この書き方では関数内で積まれたスタックがリターン時に解放されてしまうので、 返したアドレスが無効になってしまって、たまたま動くこともありますが、 最悪セグメンテーションフォールトになっちゃいます。 とあるパスの前のパスを返す get_directory()というのを考えてみます。 例) 例えば渡されたパスが/home/user1/hoge.txtだとすると/home/user1/というのを返す場合を考えてみます。 例1 ダメな例 コンパイル $ gcc -o string1.exe string1.c retarr.c: 関数 ‘get_directory’ 内: retarr.c:18:5: 警告: 関数が局所変数のアドレスを返します [-Wreturn-local-a

    関数内で宣言した配列変数をreturnしてはいけない - Gobble up pudding
    Fohte
    Fohte 2015/11/17
  • Cでのコマンドラインパラメータの受け方メモ – taichino.com

    Cのプログラムでコマンドラインからパラメータを受けたい訳ですが、自力でやろうとしてもargv経由で文字列配列が渡されるだけなので非常に面倒です(LL病な自分としてはハッシュで欲しい)。例えば以下のgrepコマンドの用に複数のパラメータを順不同で受けたいとかになると、かなり大変ですね。 $ grep -nH -I -R search_text * そこで、なんか無いのかと思って調べてみるとgetoptを使えば良い事がわかりました。 この関数を使うとパラメータを受ける処理を以下のように書けます。第3引数で取り得るオプションの種類を指定します。”abcd:e:”の場合は、取り得るオプションはa,b,c,d,eの5種類で、その内コロン付きのdとeは値を取ります。 #include "stdio.h" #include "stdlib.h" #include "getopt.h" int main(

    Fohte
    Fohte 2015/07/20
  • 関数に配列を渡す | C言語入門~bituse~

    今回は関数に配列を渡す方法についてご紹介します。 今まで関数にはただの変数かポインタしか渡していなかったと思いますが、 配列を渡すことも可能です。 以下のコードを見てください。 #include <stdio.h> void func(int [10]); int main(void){ int figure[10]={1,2,3,4,5,6,7,8,9,10}; func(figure); return 0; } void func(int temp[10]){ for(int i=0;i<10;++i){ printf("%d\n",temp[i]); } } これを実行すると、1~10までの数字が縦に表示されます。 最初にfigureという配列を10個宣言して初期値を設定します。 その後、func関数に渡して表示しています。 このことから配列を渡して処理できていることが分かります。

    Fohte
    Fohte 2014/08/10
  • 1