文件中的开头内容是明明是空格,为什么却输出了1
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, n;
FILE* fp;
if ((fp = fopen("temp", "w+")) == NULL)
{
exit(0);
}
for (i = 1; i <= 10; i++)
fprintf(fp, "%3d", i);
/*for (i = 0; i < 5; i++)
{
fseek(fp, i * 6L, SEEK_SET);
fscanf(fp, "%d", &n);
printf("%3d", n);
}*/
fseek(fp, 0, SEEK_SET);
fscanf(fp, "%d", &n);
printf("%3d", n);
printf("\n");
fclose(fp);
return 0;
}
把21行读取的fscanf(fp, "%d", &n);中的%d换为%c,即可
原因是%d格式读取时会忽略前面的空格
修改后代码如下
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
char n;
FILE* fp;
if ((fp = fopen("temp", "w+")) == NULL)
{
exit(0);
}
for (i = 1; i <= 10; i++)
fprintf(fp, "%3d", i);
printf("\n");
fseek(fp, 0, SEEK_SET);
while(fscanf(fp, "%c", &n)!=EOF){
printf("%c", n);
}
printf("\n");
fseek(fp, 0, SEEK_SET);
fscanf(fp, "%c", &n);
if(n==' '){
printf("n是空格 ");
}
printf("\n");
fclose(fp);
return 0;
}
希望能帮到你。
关于%d读取时空格忽略的验证实验如下,
#include <stdio.h>
int main()
{
int n;
printf("请输入一个数:");
fscanf(stdin,"%d",&n);//忽略前面的空格直到取到第一个数字
printf("\n输入的数是%d",n);
printf("\n");
char line;
fscanf(stdin,"%c",&line);//取出上次回车输入的\n
char c;
printf("请输入一个字符:");
fscanf(stdin,"%c",&c);//不会忽略空格,把空格当成字符读取了
printf("\n输入的字符是%c",c);
printf("\n");
return 0;
}