atoi是把字符串转换为int型数据
atof是转换为float型
strtok是分隔字符串的
第一个例子用了sscanf, 没有用strtok
#include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<string.h> #define MAX_Line 2048 int main(){ FILE *Fr; Fr = fopen("test_Group_Box.txt", "r"); if(NULL == Fr){ printf("ERROR!\n"); return -1; } float t; char Test_N_arr[MAX_Line]; // char *Test_N_arr = (char*)malloc(sizeof(char) *MAX_Line); char str1[50], str2[50], str3[50]; // char str1, str2, str3; // "Read Each Line of Fr and assign each fields to three pointers" while (!feof(Fr)) { fgets(Test_N_arr, MAX_Line, Fr); sscanf(Test_N_arr, "%s\t%s\t%s", str1, str2, str3); t = atof(str3); printf("%s\t", str1); printf("%s\t", str2); if (strcmp(str1,"Group") == 0){ printf("%s\n", str3); }else { printf("%.2f\n", t); } } fclose(Fr); // free(Test_N_arr); return 0; }
另一个例子用了strtok
#include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<string.h> #define MAX_Line 2048 int main(){ FILE *Fr; Fr = fopen("test_Group_Box.txt", "r"); if(NULL == Fr){ printf("ERROR!\n"); return -1; } float t; char *Test_N_arr = (char*)malloc(sizeof(char) *MAX_Line); char *str; // "Read Each Line of Fr and assign each fields to three pointers" while (!feof(Fr)) { fgets(Test_N_arr, MAX_Line, Fr); str = strtok(Test_N_arr, "\t"); int i = 0; while(str != NULL){ if( i == 2){ if(strcmp(str, "Qual\n") == 0){ printf("%s", str); } else { t = atof(str); printf("%.2f\n", t); } }else { printf("%s\t", str); } i++; str = strtok(NULL, "\t"); } } fclose(Fr); free(Test_N_arr); return 0; }
原文地址:http://matrix6ro.blog.51cto.com/1746429/1885662