0

そのため、ユーザーが入力した単語をファイル内で検索するプログラムを作成しようとしています。一致するものがある場合は「FOUND IT」と表示され、何も見つからなかった場合は「COULDNT FIND ANYTHING」と表示されます (明らかに :p)。ユーザーが選択した単語をファイルでスキャンする方法がわかりません(scanfを介して書き込みます)。

これが私の(機能しない)コードです。アドバイスをありがとう!

#include "stdafx.h"
#include <conio.h>
#include <iostream>
#include <string.h>
#include <string>
#define slovo 255

using namespace std;
 int _tmain(int argc, _TCHAR* argv[])
{
int i;
char secret[slovo];
int outexists,fileexists;
system("Color 02");

setlocale(LC_ALL, "");
FILE*out = fopen("additions.txt", "w+");
if (!out)
{
    perror("additions.txt");
    getchar();
    return 1;

}
else
{
    outexists = 1;
}
FILE*file = fopen("db.txt", "r");

if (!file)
{

    perror("db.txt");
    getchar();
    return 1;

}
else
{
    fileexists = 1;
}
char artist[slovo];

printf("Welcome, hit ENTER to start looking.\n");
getchar();
printf("Please enter for the word you wish to search for in our database !
\n    ");

scanf("%s",&artist);



**/* THIS PART */** if (fileexists == 1 && outexists == 1)
    {
        while (fscanf(file, "%c", secret) != EOF){

            { if (!strncmp(secret, artist, sizeof(artist)))
            {
                printf("FOUND IT \n");
                fclose(file);
            }
            else
            {
                printf("COULDNT FIND IT \n");
                fclose(file);

            }
            }

        }


}







printf("Which word do you wish to add  ?\n");
scanf("%s", artist);
fprintf(out, "%s", artist);
printf("done! \n");
getchar();




fclose(file);
fclose(out);


getchar();



return 0;

}

4

2 に答える 2

0

%sの代わりに変換パターンが必要になる可能性があります%c。後者は 1 文字のみを読み取ります。前者は文字列を読み取ります。

fscanf(file, "%s", secret)

編集

それも見ただけで、

fclose(file);

+を 1 つだけ実行した後、while ループ内ifと内の両方でファイルを閉じます。そうしないでください。ループが終了した後にファイルを閉じてください。elsefscanfstrncmp

strcmpの代わりに単に使用することもできstrncmpます。

編集2

それで、「トリッキーな」コードをコピーして貼り付けた後、コンソールのフォントの色が緑に変わった後、テキストファイルで単語を見つけることができました:

まずそれを取り除きgetchar();ます!

printf("Welcome, hit ENTER to start looking.\n");
getchar();

Welcome, hit ENTER to start looking.が印刷された後に検索するキーを常に入力していましたが、Enterキーを押すとgetchar()、入力を待っていたため何も読み取られません。

2番目

scanf("%s",&artist);

は正しくありません。使用してください

scanf("%s", artist);

代わりに、アドレスを渡す必要はありません。既に配列になっています。

printf("Welcome, hit ENTER to start looking.\n");
printf("Please enter for the word you wish to search for in our database !\n");
scanf("%s",artist);
if (fileexists == 1 && outexists == 1) {
    char found = 0;
    while (fscanf(file, "%s", secret) != EOF) {
        if (!strcmp(secret, artist)) {
            found = 1;
            break;
        }
    }
    fclose(file);
    if(found) {
        printf("FOUND IT \n");
    } else {
        printf("COULDNT FIND IT\n");
    }
}
于 2013-11-09T20:12:18.080 に答える