能力值:
( LV2,RANK:10 )
|
-
-
2 楼
csvdata intp; 这个没初始化 乱码了吧
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
int main() { vector<csvdata> incsv; csvdata intp; FILE *fp; fp=fopen("price.csv","r"); if( fp == NULL) { cout << "price.csv is not exsit!\n"; exit(1); } while(1){ fscanf(fp,"%d,%d,%f,%f",&intp.id,&intp.level,&intp.price,&intp.cost); incsv.push_back(intp); if (feof(fp)) break; // }// // fclose(fp); for(int i=0;i<incsv.size();i++) { cout <<"Running!!!" << "\n"; cout<<incsv[i].id<<" "<<incsv[i].level<<" "<<incsv[i].price<<" "<<incsv[i].cost<<endl; } // 输出显示每行的数据 //system("pause"); } fclose(fp); return 0; }
我代码改成上面,打印出来的是地址。初始化的地方应该如何修改?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
十年后不是你
csvdata intp; 这个没初始化 乱码了吧 能把关键的错误改一下吗?谢谢!
fscanf(fp,"%d,%d,%f,%f",&intp.id,&intp.level,&intp.price,&intp.cost);
好像是这句话写的有问题,但我不知道如何修改?
最后于 2021-1-20 12:23
被limee编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
limee
十年后不是你
csvdata intp; 这个没初始化 乱码了吧 能把关键的错误改一下吗?谢谢!fscanf(fp,"%d ... #include <iostream> #include <fstream> #include <vector> #include <string> using namespace std;
int main() { int id; int level; float price; float cost;
FILE *fp; fp=fopen("price.csv","r"); if( fp == NULL) { cout << "price.csv is not exsit!\n"; exit(1); } while(!feof(fp)) { fscanf(fp,"%d,%d,%f,%f",&id,&level,&price,&cost); cout<<id<<" "<<level<<" "<<price<<" "<<cost<<endl; }//while fclose(fp); return 0; }
我把类给取消了,然后为啥文件指针不往下走,程序死循环了。 打印输出的数据也不是我想要的。
最后于 2021-1-20 12:59
被limee编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
直接在你代码的位置加入把首行排除就行了 , 因为你的首行并不能用 %d 来格式化 //因为你文件里面的第一行并不是 %d,%d,%f,%f 的格式. 让他跳下一行
char tempHead[256]={0};
fgets(tempHead ,sizeof(tempHead), fp);
//从下一行开始scanf就正确了.
while(1){
fscanf(fp,"%d,%d,%f,%f",&intp.id,&intp.level,&intp.price,&intp.cost);
incsv.push_back(intp);
if (feof(fp)) break;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
Mxixihaha
直接在你代码的位置加入把首行排除就行了 , 因为你的首行并不能用 %d 来格式化 //因为你文件里面的第一行并不是 %d,%d,%f,%f 的格式.&nbs ...
谢谢,果然是这个问题。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
|
能力值:
(RANK:0 )
|
-
-
9 楼
你这是c++吗? 分明是c. c++和c天壤之别. 学c++,就不要用c那一套.
|
|
|