我有一个数据文件,其中包含字符串、 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/