我正在尝试从包含以下行
的文本文件中获取输入John,.) 789.. 89,88,79,69
但是,我无法使用我的sscanf声明正确获取数字,我哪里错了?名称打印正确,但标记是垃圾值......
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
char name[20];
int ID;
int marks[4];
} details;
int main()
{
char string[100];
details student[2];
FILE *ptr = fopen("testing7.txt", "r");
if ((ptr = fopen ("testing7.txt", "r")) != NULL)
printf("file successfully opened\n");
else
{
printf("file could not be opened\n");
return 0;
}
fgets(string,100, ptr);
// testing to see if string was obtained
printf("%s", string);
sscanf(string,"%s,.) %d.. %d,%d,%d,%d", student[0].name, &student[0].ID, &student[0].marks[0], &student[0].marks[1],&student[0].marks[2],&student[0].marks[3]);
printf("%s\t%d\t%d\t%d\t%d\t%d\n", student[0].name, student[0].ID, student[0].marks[0], student[0].marks[1], student[0].marks[2], student[0].marks[3]);
fclose(ptr);
return 0;
}
答案 0 :(得分:2)
逗号,fullstop或括号不被视为空白字符,因此格式说明符%s
将使用它们。
我没有对此进行测试,但以下格式字符串应该适用于您的情况:
%[^,],.) %d.. %d,%d,%d,%d
说明:
%[^,]
=&gt;阅读直到遇到逗号。