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

标签 c struct scanf delimiter

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

相关文章:

c - pthread_mutex_lock 等待锁定高度满足的互斥体正好 60 秒(如果互斥体无法立即锁定)

c - 需要帮助来理解这段代码的输出

c - scanf在c中的数学表达式

c - 可能在 C 中取消引用 NULL

C 编程 - Main 无法识别被调用函数的变量结果。

c - 返回 DMA 地址的结构指针

C,指向结构中函数的指针,警告 "assignment from incompatible pointer type"

c - 子函数中的指针和赋值

c - 在 scanf 中多次使用相同的整数

c - 从文本文件中扫描数据,每个数据项之间没有间距