サンプル集  >  VC  >  配列
ファイルの中身を表示する
1996/11/25

配列の例です。

P016.cpp
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
/* PROGRAM NAME : P016.cpp        */
/* AUTHOR       : ymlib.com       */
/* MAKE DAY     : 1996/07/16      */

/*        */
/*  配列  */
/*        */

#include <stdio.h>
#include <string.h>
#include <memory.h>

void main(void) {
    char buf1[256];
    char buf2[256];
    char buf3[256];

    memset (buf1, 0, sizeof(buf1));
    memset (buf2, 0, sizeof(buf2));
    memset (buf3, 1, sizeof(buf3));

    printf("配列1のデータを入力して下さい。:");
    gets (buf1);

    printf("配列2のデータを入力して下さい。:");
    gets (buf2);

    printf("\n");

    if (strcmp(buf1, buf2) == 0) {
        printf("配列1と配列2は等しい\n");
    } else {
        printf("配列1と配列2は等しくない\n");
    }
    
    strcpy(buf3, buf2);
    
    if (memcmp(buf1, buf2, sizeof(buf1)) == 0) {
        printf("配列1と配列2は等しい\n");
    } else {
        printf("配列1と配列2は等しくない\n");
    }
    
    if (memcmp(buf1, buf3, sizeof(buf1)) == 0) {
        printf("配列1と配列3は等しい\n");
    } else {
        printf("配列1と配列3は等しくない\n");
    }
}


2016/04/27 追記

Visual C++ 2010 でテストしてみます。

◆環境
OS Windows 7 Professional Service Pack 1 (64bit)
VC Microsoft Visual C++ 2010 01018-587-4111284-70817

[Win32] - [Win32 コンソール アプリケーション] でプロジェクトを作りソースを貼り付けます。

ビルドエラーが出ました。

1>------ ビルド開始: プロジェクト: P016, 構成: Debug Win32 ------
1>2016/04/27 10:27:06 にビルドを開始しました。
1>InitializeBuildStatus:
1>  "Debug\P016.unsuccessfulbuild" のタッチ タスクを実行しています。
1>ClCompile:
1>  すべての出力が最新のものです。
1>  P016.cpp
1>c:\p016\p016.cpp(10): warning C4627: '#include <string.h>': プリコン
パイル済みヘッダーの使用を検索中にスキップされました
1>          ディレクティブを 'StdAfx.h' に追加するか、プリコンパイル済
みヘッダーをビルドし直します
1>c:\p016\p016.cpp(11): warning C4627: '#include <memory.h>': プリコン
パイル済みヘッダーの使用を検索中にスキップされました
1>          ディレクティブを 'StdAfx.h' に追加するか、プリコンパイル済
みヘッダーをビルドし直します
1>c:\p016\p016.cpp(50): fatal error C1010: プリコンパイル ヘッダーを検
索中に不明な EOF が見つかりました。'#include "StdAfx.h"' をソースに
追加しましたか?
1>
1>ビルドに失敗しました。
1>
1>経過時間 00:00:00.47
========= ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ =========

自動生成されたソースではstdafx.hをincludeしていました。 またmainも_tmainとなっていたので、昔のソースを全て貼り付けるのではなくロジック部分とinclude宣言を貼り付けるようにしました。

P016.cpp
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
41: 
42: 
43: 
44: 
45: 
46: 
47: 
48: 
49: 
50: 
// P016.cpp : コンソール アプリケーションの
// エントリ ポイントを定義します。
//

#include "stdafx.h"

#include <stdio.h>
#include <string.h>
#include <memory.h>

int _tmain ( int argc, _TCHAR* argv[] )
{
    char buf1[256];
    char buf2[256];
    char buf3[256];

    memset (buf1, 0, sizeof(buf1));
    memset (buf2, 0, sizeof(buf2));
    memset (buf3, 1, sizeof(buf3));

    printf("配列1のデータを入力して下さい。:");
    gets (buf1);

    printf("配列2のデータを入力して下さい。:");
    gets (buf2);

    printf("\n");

    if (strcmp(buf1, buf2) == 0) {
        printf("配列1と配列2は等しい\n");
    } else {
        printf("配列1と配列2は等しくない\n");
    }

    strcpy(buf3, buf2);

    if (memcmp(buf1, buf2, sizeof(buf1)) == 0) {
        printf("配列1と配列2は等しい\n");
    } else {
        printf("配列1と配列2は等しくない\n");
    }

    if (memcmp(buf1, buf3, sizeof(buf1)) == 0) {
        printf("配列1と配列3は等しい\n");
    } else {
        printf("配列1と配列3は等しくない\n");
    }

    return 0;
}

ビルドをしてみます。

1>------ ビルド開始: プロジェクト: P016, 構成: Debug Win32 ------
1>2016/04/27 10:28:30 にビルドを開始しました。
1>InitializeBuildStatus:
1>  "Debug\P016.unsuccessfulbuild" のタッチ タスクを実行しています。
1>ClCompile:
1>  すべての出力が最新のものです。
1>  P016.cpp
1>c:\p016\p016.cpp(22): warning C4996: 'gets': This function or variab
le may be unsafe. Consider using gets_s instead. To disable deprecat
ion, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\inc
lude\stdio.h(277) : 'gets' の宣言を確認してください。
1>c:\p016\p016.cpp(25): warning C4996: 'gets': This function or variab
le may be unsafe. Consider using gets_s instead. To disable deprecat
ion, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\inc
lude\stdio.h(277) : 'gets' の宣言を確認してください。
1>c:\p016\p016.cpp(35): warning C4996: 'strcpy': This function or vari
able may be unsafe. Consider using strcpy_s instead. To disable depr
ecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\inc
lude\string.h(105) : 'strcpy' の宣言を確認してください。
1>LinkEmbedManifest:
1>  P016.vcxproj -> C:\Debug\P016.exe
1>FinalizeBuildStatus:
1>  ファイル "Debug\P016.unsuccessfulbuild" を削除しています。
1>  "Debug\P016.lastbuildstate" のタッチ タスクを実行しています。
1>
1>ビルドに成功しました。
1>
1>経過時間 00:00:06.52
========= ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ =========

実行します。

> P016.exe
配列1のデータを入力して下さい。:test
配列2のデータを入力して下さい。:vc

配列1と配列2は等しくない
配列1と配列2は等しくない
配列1と配列3は等しくない

> P016.exe
配列1のデータを入力して下さい。:test
配列2のデータを入力して下さい。:test

配列1と配列2は等しい
配列1と配列2は等しい
配列1と配列3は等しくない

プロジェクトを作成する際にプリコンパイル済みヘッダーを利用しないようにすれば最初のエラーは回避できたかも知れません。

参考:ファイルの中身を表示する

▲ PageTop  ■ Home


Copyright (C) 2016 ymlib.com