你如何在 C 中扫描单个字符?

jos*_*rav 5 c parsing

我想扫描一行文本中的首字母。我的文字如下:

12345 3.5000 a j
12346 4.1000 s p
Run Code Online (Sandbox Code Playgroud)

第一个数字代表学生ID,第二个数字代表gpa,第三个字符代表第一个首字母,第四个字符代表学生的最后一个首字母。我的文本文件包含这些值。以下是我的代码:

fscanf(fp, "%d %c %c", &studentID, &i1, &i2);
Run Code Online (Sandbox Code Playgroud)

我只想为 studentID 和首字母设置值。但是,当我使用代码时,它显示我的学生ID第一次是正确的,但是它设置了我的首字母为3,然后它说我的学生ID是5000,然后将下一个首字母设置为5000。我有这里有点麻烦。如果你能帮助我,那就太好了。

谢谢!

chu*_*ica 6

使用*扫描,但不保存

fscanf(fp, "%d %*f %c %c", &studentID, &i1, &i2);
//             ^^^ Scan but do not save the GPA   
Run Code Online (Sandbox Code Playgroud)

明智地检查返回值是否成功。
*说明符不计入结果。

if (fscanf(fp, "%d %*f %c %c", &studentID, &i1, &i2) == 3) Success();
Run Code Online (Sandbox Code Playgroud)


Roh*_*ari 6

使用%*f你需要的地方跳字(因为GPA是一个浮点)被读取。例如:

fscanf(fp, "%d %*f %c %c", &studentID, &i1, &i2);

12345 3.5000 a j
^^^^^________^_^ // ^ will be read
Run Code Online (Sandbox Code Playgroud)