こんばんは。
普段Cでコードを書いている学生です。
C++のvectorを使ってファイルから一行ずつ数字を読み込んで格納するファイルを作成中なのですが、
ファイルは読み込むのになぜかvectorに格納されません。
問題のコードは以下の通りです。二つの関数の宣言は別のヘッダファイルでしてあります。
c++
1#include <stdio.h> 2#include <iostream> 3#include <vector> 4using namespace std; 5 6 7FILE *fp1; 8/*(1-3)*/ 9void file_input(vector<double> v){ 10 int leng = file_counter(0); 11 v.reserve(leng); 12 rewind(fp1); 13 int i = 0; 14 double j; 15 while (1) { 16 fscanf(fp1, "%lf",&v[i]); 17 i++; 18 printf("v=%f\n",v[i]); 19 20 if(i >= leng) 21 break; 22} 23 fclose(fp1); 24} 25 26 27/*(1-5)*/ 28int file_counter(int flag){ 29 char filename [256]; 30 int counter = 0; 31 printf("ファイル名を入力してください:"); 32 scanf("%s",filename); 33 34 if ((fp1 = fopen(filename, "r")) == NULL) { 35 printf("file open error!!\n"); 36 exit(EXIT_FAILURE); 37 } 38 else{ 39 double fake; 40 while(fscanf(fp1, "%lf", &fake) != EOF){ 41 counter++; 42 } 43 } 44 if(flag){ 45 printf("ファイルから読み取ったデータ数は%dでした\n",counter); 46 fclose(fp1); 47 } 48 49 return counter; 50}
尚、ファイルからでなくキーボードから入力でvectorに格納する分にはうまく行きました。
以下のコードです。
C++
1vector<double> input_key(vector<double> v, int n){ 2 int i; 3 for(i=0;i<n;i++){ 4 printf("data[%d]=",i); 5 scanf("%lf",&v[i]); 6 } 7 return v; 8
この二つの違いがよくわかりません。
改善案などあれば教えてください。
稚拙な日本語とコードで申し訳ありませんが、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/15 23:54
2018/04/15 23:56
2018/04/16 00:12
2018/04/16 00:17 編集
2018/04/16 00:22
2018/04/16 00:25
2018/04/16 00:52
2018/04/16 06:04
2018/04/16 06:16
2018/04/16 06:18