1.如果二进制文件a.dat 已经存在,现在要求写人全新数据,应以 B 方式打开。
A. "w"
B. "wb "
C. "w+"
D. "wb+"
首先是dat(二进制)文件,必须带b。全新文件,不能有+号,故选B.
2.直接使文件指针重新定位到文件读写的首地址的函数是 rewind ()
ftell() 函数用于得到文件指针当前位置相对于文件首地址的偏移字节数;
fseek()函数用于设置文件指针的位置;
rewind()函数用于将文件内部的位置指针重新指向一个流(数据流/文件)的开头;
ferror()函数可以用于检查调用输入输出函数时出现的错误。
3. 有如下代码,则以下各输入语句中错误的是 scanf("%s", &std.name);
int main()
{
struct student
{
char name[10];
int age;
char gender;
}std[3],*p=std;
scanf("%d", &(*p).age);
scanf("%c", &std[0].gender);
scanf("%c", &(p->gender));
//scanf("%s", &std.name); 错误
system("pause");
return 0;
}
4.以下代码将打印出 3,3,3
int main(void)
{
int a = 2, *p1, **p2;
p2 = &p1;
p1 = &a;
a++;
printf("%d,%d,%d\n", a, *p1, **p2); // 3,3,3
system("pause");
return 0;
}
5.下列代码的输出结果是 8,8
int main()
{
int arr[] = { 6, 7, 8, 9, 10 };
int *ptr = arr;
*(ptr++) += 123;
printf("%d,%d\n", *ptr,*(++ptr));//8,8
system("pause");
return 0;
}
*(ptr++)+=123; //这里运行后,ptr = &arr[1], arr[0] = 129
printf("%d,%d",*ptr,*(++ptr)); //这里先计算++ptr,ptr =&arr[2], 所以相当于printf("%d,%d",arr[2],arr[2]);
执行printf:在VC中,printf执行的顺序是自右向左,所以先执行*(++ptr)
外加一条:printf在不同的编译环境下运算的顺序是不同的。