l******0 发帖数: 313 | 1 需要从一个文件里读数据写入一些变量里
文件是这样的格式 GOOG|588.88
需要将GOOG写入一个string里,然后将588.88写入一个float number里,我写了以下
code:
char tempprice[10];
char ticker[10];
fscanf(fr,"%[^|]|%[^\n]\n",ticker,tempprice);
float stockprice = stof(tempprice); //将string变成float
上面的code, ticker会正确得到GOOG,但是tempprice却无法得到588.88,请问哪里出
错了?
另外,有更优化的方法么
非常感谢 | l********a 发帖数: 1154 | 2 你能保证|前面的长度吗?如果都是4,下面的可以
int main()
{
FILE *fid = fopen("data.txt","r");
float num = 0.0;
char name[10] = {0};
fscanf(fid,"%4c|%f",&name,&num);
fclose(fid);
printf("Name: %s\nNumber: %f\n",name,num);
return 0;
}
如果分隔符不是|而是空格,用
fscanf(fid,"%s %f",&name,&num)好使
%s String of characters. This will read subsequent characters until a
whitespace is found (whitespace characters are considered to be blank,
newline and tab). | l******0 发帖数: 313 | 3 你好,谢谢,不能保证都是4,但可以保证长度小于6
【在 l********a 的大作中提到】 : 你能保证|前面的长度吗?如果都是4,下面的可以 : int main() : { : FILE *fid = fopen("data.txt","r"); : float num = 0.0; : char name[10] = {0}; : fscanf(fid,"%4c|%f",&name,&num); : fclose(fid); : printf("Name: %s\nNumber: %f\n",name,num); : return 0;
| b***i 发帖数: 3043 | 4 不就是读入直到|,然后读入|到一个char里面,然后读入一个浮点数吗
int main(){
char line[]={"GOODG|256.5"};
char name[10];
float x;
char c;
sscanf(line, "%[^|]%c%f", name, &c, &x);
printf("%s\n", name);
printf("%f", x);
return 0;
}
【在 l******0 的大作中提到】 : 需要从一个文件里读数据写入一些变量里 : 文件是这样的格式 GOOG|588.88 : 需要将GOOG写入一个string里,然后将588.88写入一个float number里,我写了以下 : code: : char tempprice[10]; : char ticker[10]; : fscanf(fr,"%[^|]|%[^\n]\n",ticker,tempprice); : float stockprice = stof(tempprice); //将string变成float : 上面的code, ticker会正确得到GOOG,但是tempprice却无法得到588.88,请问哪里出 : 错了?
| m*******l 发帖数: 12782 | 5 c++ can do a better job
【在 l******0 的大作中提到】 : 需要从一个文件里读数据写入一些变量里 : 文件是这样的格式 GOOG|588.88 : 需要将GOOG写入一个string里,然后将588.88写入一个float number里,我写了以下 : code: : char tempprice[10]; : char ticker[10]; : fscanf(fr,"%[^|]|%[^\n]\n",ticker,tempprice); : float stockprice = stof(tempprice); //将string变成float : 上面的code, ticker会正确得到GOOG,但是tempprice却无法得到588.88,请问哪里出 : 错了?
| d***i 发帖数: 344 | 6
【在 b***i 的大作中提到】 : 不就是读入直到|,然后读入|到一个char里面,然后读入一个浮点数吗 : int main(){ : char line[]={"GOODG|256.5"}; : char name[10]; : float x; : char c; : sscanf(line, "%[^|]%c%f", name, &c, &x); : printf("%s\n", name); : printf("%f", x); : return 0;
| f****p 发帖数: 18483 | 7 fscanf需要地址作为参数,那个ticker本来就是字符串地址,所以没事,588.88应该直
接定义一个浮点数变量,然后用&取变量地址。fscanf自动进行转换。
【在 l******0 的大作中提到】 : 需要从一个文件里读数据写入一些变量里 : 文件是这样的格式 GOOG|588.88 : 需要将GOOG写入一个string里,然后将588.88写入一个float number里,我写了以下 : code: : char tempprice[10]; : char ticker[10]; : fscanf(fr,"%[^|]|%[^\n]\n",ticker,tempprice); : float stockprice = stof(tempprice); //将string变成float : 上面的code, ticker会正确得到GOOG,但是tempprice却无法得到588.88,请问哪里出 : 错了?
|
|