我想对一个.txt文件执行fscanf,下面是它的外观
7 6
[1,2]="english"
[1,4]="linear"
[2,4]="calculus"
[3,1]="pe"
[3,3]="Programming"
我只想取括号中的两个数字,第一个是day,第二个是session,我还想取字符串subject
下面是完整的代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
FILE *inputFile, *outputFile;
int day;
int session;
char subject[15];
inputFile = fopen("Schedule.txt", "r");
if (inputFile == NULL) {
puts("File Schedule.txt Open Error.");
}
fscanf(inputFile, "%d %d %s", &day, &session, subject);
printf("%d", day);
fclose(inputFile);
return 0;
}
显然Fscanf没有按照我希望的方式工作。
预期的输出是将数字存储到我已分配的变量中
实际上它只打印出了'7'
2条答案
按热度按时间mbjcgjjk1#
使用
sscanf
逐行阅读的方法fnx2tebb2#
只取括号中的两个数字,第一个是day,第二个是session,我还想取字符串subject
(我让OP处理第一行
"7 6\n"
。)删除所有
fscanf()
调用。使用fgets()
读取 * 行 *,然后进行分析。扫描字符串。如果完全成功,
n
将为非零值,并且buf[n]
将指向字符串的末尾。" "
使用可选白色。消耗一个。
"%d"
使用可选空格,然后使用int
的数字文本。消耗一个。
消耗一个。
"\""
使用双引号。"%14[^\"]"
使用1到14个非双引号字符,形成 * 字符串 *。"%n"
将扫描的偏移保存为int
。