#pragma warning( disable: 4996 )
#include <stdio.h>
#include <string.h>
#include <fstream>
using namespace std;
typedef struct tagKOTOWAZA{
char japanese[50];
char english[50];
}KOTOWAZA;
int main()
{
char buf[256];
KOTOWAZA c[200];
int i, count;
/*ifstream strtok strcpy を使ってファイルを読み込む*/
//=====ここから=====
ifstream fin("Book1.csv");
if(fin.is_open()){
//ファイル内容の表示とクローズ
for(count=0;fin.getline(buf, sizeof(buf)), !fin.eof();count++){//読み込める間
//printf("%s",buf);デバッグ用
char *p;
p = strtok(buf,",");
if(p)strcpy(c[count].japanese,p);
p = strtok(NULL,",");
if(p)strcpy(c[count].english,p);
}
fin.close();
}else{
printf("ファイルのオープンに失敗しました。\n");
return 1;
}
//=====ここまで====
return 0;
}
[code/]
何度もすみません。Windowsコンソールアプリケーションで空のプロジェクトに、このソースを入れてデバッグ無しで実行しても、何か入力してください...のコンソールが出てくるだけで入力すると何も帰ってこずにコンソールが消えます。
何がいけないのかが全く分かりません・・・
CSVファイルから検索したい
CSVファイルから検索したい
Re: CSVファイルから検索したい
何も出力している気配がないので、
当然であるような気がします。
タイトルに書いてある
検索
のコードは、どこにありますか?
当然であるような気がします。
タイトルに書いてある
検索
のコードは、どこにありますか?
Re: CSVファイルから検索したい
って言われましても、meteor さんが書きました: どこに何を書けばばよかったのでしょう・・・。
CSVファイルの中身がわからない
何をどのように検索したいのかわからない
結果をどのように出力したいのかわからない
という「無い無い尽くし」の状態ですので、
だれにもわかりません。
Re: CSVファイルから検索したい
つたない文章で申し訳ありません・・・。
CSVの中は
三つ子の魂百まで,As the boy, so the man.
このような文章があり、
このファイル中から単純に文字の完全一致で答えを返すようなプログラムが書きたいです。
三つ子の魂百まで を入力したら
As the boy, so the man.
とかえってくる
コンソール上で表示したいです。
これだけではだめでしょうか・・・
貴重な時間を割いていただいているのに申し訳ないです。
CSVの中は
三つ子の魂百まで,As the boy, so the man.
このような文章があり、
このファイル中から単純に文字の完全一致で答えを返すようなプログラムが書きたいです。
三つ子の魂百まで を入力したら
As the boy, so the man.
とかえってくる
コンソール上で表示したいです。
これだけではだめでしょうか・・・
貴重な時間を割いていただいているのに申し訳ないです。
Re: CSVファイルから検索したい
参考となるプログラムを提示しますので、よく読んで、
理解できなかったらよく調べて、理解したら説明してください。
それでも分からなかったら、どこが分からないのか質問してください。
解決ボタンを押すだけで逃げてはいけません。
このプログラムが気に入らないなら、
自分で別のプログラムを書いていただいてももかまいません。
理解できなかったらよく調べて、理解したら説明してください。
それでも分からなかったら、どこが分からないのか質問してください。
解決ボタンを押すだけで逃げてはいけません。
このプログラムが気に入らないなら、
自分で別のプログラムを書いていただいてももかまいません。
#include <iostream>
#include <fstream>
#include <string>
#include <map>
int main()
{
using namespace std;
ifstream fin("Book1.csv");
if (!fin) return 1;
map<string, string> data;
string line;
while (getline(fin, line)) {
size_t n = line.find(',');
if (n == line.npos) continue;
data[line.substr(0, n)] = line.substr(n+1);
}
while (cout << ">> ", getline(cin, line))
if (data.find(line) != data.end()) cout << data[line] << endl;
}
Re: CSVファイルから検索したい
はい。printf関数を使用しなくても、puts関数(やputchar関数)などで結果が表示できます。meteor さんが書きました:すみません、唐突ですがコンソール上に結果を表示させるのにはprintf 関数は必要ないんでしょうか?
fprintf関数を使用するのもいいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: CSVファイルから検索したい
元のプログラムが ifstream を使っているので
C++ であると判断しましたが、
出力関数を printf しか 知らないということは
C もあまり得意ではないということでしょうか?
では、次のプログラムは理解できますか?
わからないところは質問してください。
ちょっとクセのある書き方なので、
理解したら自分の書き方に直してみてください。
C++ であると判断しましたが、
出力関数を printf しか 知らないということは
C もあまり得意ではないということでしょうか?
では、次のプログラムは理解できますか?
#include <stdio.h>
#include <string.h>
typedef struct {
char japanese[50];
char english[50];
} Kotowaza;
int main(void)
{
static Kotowaza kotowaza[1000];
int i, n = 0;
char buf[256];
FILE *fp = fopen("Book1.csv", "r");
if (!fp) return 1;
while (n < 1000 && fgets(buf, sizeof buf, fp))
if (sscanf(buf, "%49[^,],%49[^\n]",
kotowaza[n].japanese, kotowaza[n].english) == 2) n++;
fclose(fp);
while (printf(">> "), fgets(buf, sizeof buf, stdin)) {
char *p = strchr(buf, '\n'); // 改行文字を見つけて
if (p) *p = 0; // それを削除
for (i = 0; i < n; i++)
if (strcmp(kotowaza[i].japanese, buf) == 0) break;
if (i < n) puts(kotowaza[i].english);
}
return 0;
}
ちょっとクセのある書き方なので、
理解したら自分の書き方に直してみてください。
Re: CSVファイルから検索したい
すいません調べたんですが、どうしても教えてもらいたい箇所がちらほらと・・・
while(n<1000 && fgets(buf,sizeof buf,fp))
この条件に対する繰り返し行う内容は何にあたるのかがわかりません。
while(n<1000 && fgets(buf,sizeof buf,fp))
この条件に対する繰り返し行う内容は何にあたるのかがわかりません。
Re: CSVファイルから検索したい
その直後の を繰り返すはずです。meteor さんが書きました:すいません調べたんですが、どうしても教えてもらいたい箇所がちらほらと・・・
while(n<1000 && fgets(buf,sizeof buf,fp))
この条件に対する繰り返し行う内容は何にあたるのかがわかりません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: CSVファイルから検索したい
あぁ!!ありがとうございます!
無事プログラムの動作の確認がとれました・・・。
回答して頂いたみなさん、本当に感謝しています。
時間のない中協力していただきありがとうございました。
無事プログラムの動作の確認がとれました・・・。
回答して頂いたみなさん、本当に感謝しています。
時間のない中協力していただきありがとうございました。