gpt4 book ai didi

c - 在 C 中有多个定界符的 scanf

转载 作者:太空宇宙 更新时间:2023-11-04 06:52:25 25 4
gpt4 key购买 nike

我有一个数据文件,其中包含字符串、 float 和整数,由单个逗号和随机数的空格分隔。例如:

john    , smith ,  3.87 ,  2,  6

我想将每个值扫描到包含 str,str,float,int,int 的结构中并忽略逗号和空格。我已经弄清楚了 float ,但似乎无法得到整数。任何帮助将不胜感激我的代码如下:

typedef struct applicant {  
char first[15];
char last[15];
float gpa;
int grev;
int greq;
} num1;

int main(int argc, char *argv[])
{
FILE *in, *out;
in = fopen(argv[1], "r");
out = fopen(argv[2], "w");

num1 class[10];

int i;

fscanf(in, "%[^,],%[^,],%f, %d, %d\n", class[i].first, class[i].last, &class[i].gpa, &class[i].grev, &class[i].greq);
fprintf(out, "%s %s %f %d %d", class[i].first, class[i].last, class[i].gpa, class[i].grev, class[i].greq);

最佳答案

作为sturcotte06提到您应该将 strtok() 函数与 atoi()atof() 一起使用以获得预期的结果。

char text[] = "john    , smith ,  3.87 ,  2,  6";

strcpy(class[i].first, strtok(text, ","));
strcpy(class[i].last, strtok(NULL, ",");
class[i].gpa = atof(strtok(NULL, ","));
class[i].grev = atoi(strtok(NULL, ","));
class[i].greq) = atoi(strtok(NULL, ","));

关于c - 在 C 中有多个定界符的 scanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49389862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com