タグ

2015年4月21日のブックマーク (10件)

  • ファイルを起動

    ○ファイルを起動 ■プロセスを実行します。 #include <stdio.h> #include <process.h> int main() { int hProcess = spawnl(_P_WAIT, "c:/WINNT/system32/ping", "ping", "localhost", NULL); //_P_WAIT : 子プロセスの終了まで待機 //_P_OVERLAY : 親プロセスを破棄して子プロセスを上書き //spawnl 引数の数が固定 //spawnv 引数の数が固定ではない return 0; } ■プロセスを実行し結果を取得。 //"r" 呼び出されたコマンドの標準出力を読み取ることができます。 //"w" 呼び出されたコマンドの標準入力に書き込むことができます。 //Windows プログラムで使用すると、無効なファイル ポインタが返され、プログラム

    rekramkoob
    rekramkoob 2015/04/21
    “STARTUPINFO si;// スタートアップ情報 PROCESS_INFORMATION pi;// プロセス情報 //STARTUPINFO 構造体の内容を取得 GetStartupInfo(&si); CreateProcess( NULL, // 実行可能モジュールの名前 "wscript c:\\test.vbs", // コマンドラインの文字列 NULL, // セキュリ
  • ShellExecuteをWindows7で実行したけど動かない時は”L”をつけてUniCode対応する

  • _T("")マクロだのL""マクロだのLPCTSTRだのの世界一詳しい解説

    _T("")マクロについて 初心者の方へ 下の説明を読むのが面倒なら次のように設定を変更すれば わずらわしい思いはしなくてもよくなります。 また、下の設定をすればLPCTSTRとか訳の分からないものはconst char *と同じ意味になり、 自分でコードを書く時にも_T("") などと書く必要もなくなります。 VisualStudio2005での設定例(2003や2008でもほとんど同じです): プロジェクト名で右クリックしてプロパティを選択 (ここでは太文字でcppTestと書いてあるやつ) 左側のツリーで構成プロパティ→全般を選択するとこのようなものが出てくる。 デフォルトでは文字セットのところが『Unicode 文字セットを使用する』となっているはず。 これを『マルチバイト文字セットを使用する』に変更してOKを押すと設定完了。 上級者向けの説明 おそらくVisual Studio2

  • strcmp

    文字列の比較 【書式】 #include <string.h> int strcmp(const char *s1, const char *s2); 【説明】 文字列s1と文字列s2を比較します。 【引数】 const char *s1 : 比較文字列1 const char *s2 : 比較文字列2 【戻り値】 s1 > s2 で正の値、s1 < s2 で負の値、s1 = s2で 0 を返す。この大小関係は一般に文字コード順による。 【使用例】 #include <stdio.h> #include <string.h> int main(void) { char str[] = "ABC"; char str1[] = "ABC"; char str2[] = "ABD"; char str3[] = "B"; char str4[] = "AAAA"; printf("strcmp

  • char **からconst char **への変換が暗黙に出来ないのはなぜ?

    [戻る] かざかざ 2004/10/21(木) 16:16:55 C++についての質問です。 通常、以下のコードは警告も無くコンパイル可能だと思います。 static void funcchild2(const char *str) { puts(str); } static void funcparent2() { char *str="Atring"; str[0]='S'; funcchild2(str); } しかし、以下のコードはエラーが出ます。 static void funcchild(const char **aStr) { puts(aStr[0]); puts(aStr[1]); puts(aStr[2]); puts(aStr[3]); } static void funcparent() { char *aStr[]=

  • unsignedchar型をconstchar型に変換するにはどうすればよいですか? - unsignedcharで得られたデータs[]を... - Yahoo!知恵袋

    例えばこんなソースがあります。これが単純にstrcmpを使用して 同一文字列かをチェックするプログラムです。 #include<stdio.h> #include<string.h> int main(){ unsigned char str[] = {"abcd"}; if(0 == (strcmp(str,"abcd"))){ printf("同一文字列です\n"); }else{ printf("同一文字列ではありません\n"); } return 0; } これは正常に動作します。 しかし、strcmpの所を if(0 == (strcmp(str[0],"abcd"))){ if(0 == (strcmp(*str,"abcd"))){ というようにすると 「間接参照のレベルが 'const char *' と 'unsigned char' で異なっています。」 と怒られます。

    unsignedchar型をconstchar型に変換するにはどうすればよいですか? - unsignedcharで得られたデータs[]を... - Yahoo!知恵袋
    rekramkoob
    rekramkoob 2015/04/21
    “strcmp”
  • 文字列の一部を取り出すには (substring の自作例) | C言語のTips | C言語入門講座cClip

    部分文字列を取り出す機能として、JavaJavaScript などには substring という機能があります。指定した位置 pos から end または長さを指定して、文字列の一部を取得する機能です。 C言語には substring は用意されていません。 今回は、次の2つの例で部分文字列を取り出す方法を紹介します。 (1) strncpy を使う (2) substring 関数を自作する (1) strncpy で部分文字列を取り出す コピー元の文字列を渡すときに、文字列の先頭でなく +pos して渡します。 strncpy は '\0' を付加しないので、取り出し後に自分で NULLストップする必要があります。 #include <stdio.h> #include <string.h> main() { char str[] = "01234567890"; char t

    rekramkoob
    rekramkoob 2015/04/21
    “ char t[64]; int pos, n;”
  • time

    現在時刻を取得します 【書式】 #include <time.h> time_t time(time_t *timer); 【説明】 暦時刻を、timer が指す記憶場所に格納します。暦時刻は多くの処理系で、グリニッチ標準時(GMT)の1970年 1月 1日の00:00:00 から現在までの経過時間を秒単位で扱います。 time_t は time.h の中で宣言されていますが、一般に typedef long time_t; です。 timer に入る値と、関数の戻り値は同じ物です。ただし、timer に NULL を設定した場合には、戻り値に暦時間を返却するのみとなります。 返却データは localtime関数や ctime関数を使って読めるようにするのが一般的です。 【引数】 time_t *timer : 経過時間の格納場所へのポインタ 【戻り値】 現在の暦時間(秒)。エラー時:-1

  • C++ の iostream フォーマット指定早見表

    C++ の iostream ってなぜ printf() ほどメジャーじゃないんだろう。 << がキモいから? iostream の書式指定まわりが覚えづらいから?それでも、できれば iostream でスマートに書いてみたいものです。 C (stdio) / C++ (iostream) 出力フォーマット指定対応表 そこで、 C (stdio) と C++ (iostream) の出力フォーマット指定の対応表を作ってみました。「printf()ではこう書くけど、 iostream ではどうやって書くんだっけ?」みたいなとき用。 C (stdio) C++ (iostream) 出力結果

  • 現在時刻を取得する

    ○現在時刻を取得する ■年月日を求める #include <stdio.h> #include <time.h> int main() { time_t now = time(NULL); struct tm *pnow = localtime(&now); char week[][3] = {"日","月","火","水","木","金","土"}; printf("今日は%2d年%2d月%2d日(%s)です。\n", pnow->tm_year+1900, pnow->tm_mon + 1, pnow->tm_mday, week[pnow->tm_wday]); return 0; } 実行結果 現在の日付が表示されます 今日は2006年12月 1日(金)です。 ■時分秒を求める #include <stdio.h> #include <time.h> int main(){ tim