各位大侠请问一下
ioctlsocket()函数是干什么用的?它返回值是什么?共有几个参数?它的各个参数是干什么用的?SetForegroundWindow()是干什么用的?它返回值是什么?它的各个参数是干什么用的?fflush(0)是干什么用的?它还有别的参数吗?它返回值是什么?它的各个参数是干什么用的?atio()是干什么用的?它的参数是什么?它返回值是什么?它的各个参数是干什么用的?inet_ntoa()是干什么用的?他的参数是什么?它返回值是什么?它的各个参数是干什么用的?ntohs()是干什么用的?他的参数是什么?它返回值是什么?它的各个参数是干什么用的?fgets()是干什么用的?他的参数是什么?它返回值是什么?它的各个参数是干什么用的?以上各题每回答对一个给10分!(回答特别好的可以多给分)
ioctlsocket()函数是干什么用的?它返回值是什么?共有几个参数?它的各个参数是干什么用的?SetForegroundWindow()是干什么用的?它返回值是什么?它的各个参数是干什么用的?fflush(0)是干什么用的?它还有别的参数吗?它返回值是什么?它的各个参数是干什么用的?atio()是干什么用的?它的参数是什么?它返回值是什么?它的各个参数是干什么用的?inet_ntoa()是干什么用的?他的参数是什么?它返回值是什么?它的各个参数是干什么用的?ntohs()是干什么用的?他的参数是什么?它返回值是什么?它的各个参数是干什么用的?fgets()是干什么用的?他的参数是什么?它返回值是什么?它的各个参数是干什么用的?以上各题每回答对一个给10分!(回答特别好的可以多给分)
解决方案 »
- win7,Server2000利用ADO连接数据库的兼容性问题
- 如何选择部分图片并粘贴到另一个对话框
- 具有分割窗口的mdi程序中各个分割窗口间如何传递数据
- 问一下ASSERT到底是干什么的,有什么作用呢
- 读入图片数据并且StretchBlt之后`窗口里图片不能马上显示
- 为什么我在vc中用CRecordSet打开数据库,会出现数据截取错误?
- 如何把用vc编的程序和网页联系起来!
- 在局域网内连接oracle数据库,连接的表中有7万多条记录,用ODBC太慢,询问解决办法
- 在MFC中,如何利用对话框生成控件?
- mfc创建类
- 高分求解。。。。。。。。这样的功能怎么实现???
- 为什么我的CAsyncSocket类只能接收一次数据?
The Windows Sockets ioctlsocket function controls the I/O mode of a socket.int ioctlsocket(
SOCKET s,
long cmd,
u_long FAR *argp
);
Parameters
s
[in] Descriptor identifying a socket.
cmd
[in] Command to perform on the socket s.
argp
[in, out] Pointer to a parameter for cmd.
Return Values
Upon successful completion, the ioctlsocket returns zero. Otherwise, a value of SOCKET_ERROR is returned, and a specific error code can be retrieved by calling WSAGetLastError.Error code Meaning
WSANOTINITIALISED A successful WSAStartup call must occur before using this function.
WSAENETDOWN The network subsystem has failed.
WSAEINPROGRESS A blocking Windows Sockets 1.1 call is in progress, or the service provider is still processing a callback function.
WSAENOTSOCK The descriptor s is not a socket.
WSAEFAULT The argp parameter is not a valid part of the user address space.
简述:
控制套接口的模式。 #include <winsock.h> int PASCAL FAR ioctlsocket( SOCKET s, long cmd, u_long FAR* argp); s:一个标识套接口的描述字。
cmd:对套接口s的操作命令。
argp:指向cmd命令所带参数的指针。注释:
本函数可用于任一状态的任一套接口。它用于获取与套接口相关的操作参数,而
与具体协议或通讯子系统无关。支持下列命令:
FIONBIO:允许或禁止套接口s的非阻塞模式。argp指向一个无符号长整型。如
允许非阻塞模式则非零,如禁止非阻塞模式则为零。当创建一个套接口时,它就处
于阻塞模式(也就是说非阻塞模式被禁止)。这与BSD套接口是一致的。
WSAAsynSelect()函数将套接口自动设置为非阻塞模式。如果已对一个套接口进行了
WSAAsynSelect() 操作,则任何用ioctlsocket()来把套接口重新设置成阻塞模式的试
图将以WSAEINVAL失败。为了把套接口重新设置成阻塞模式,应用程序必须首先
用WSAAsynSelect()调用(IEvent参数置为0)来禁至WSAAsynSelect()。
FIONREAD:确定套接口s自动读入的数据量。argp指向一个无符号长整型,其
中存有ioctlsocket()的返回值。如果s是SOCKET_STREAM类型,则FIONREAD返
回在一次recv()中所接收的所有数据量。这通常与套接口中排队的数据总量相同。
如果S是SOCK_DGRAM 型,则FIONREAD返回套接口上排队的第一个数据报大
小。
SIOCATMARK:确实是否所有的带外数据都已被读入。这个命令仅适用于
SOCK_STREAM类型的套接口,且该套接口已被设置为可以在线接收带外数据
(SO_OOBINLINE)。如无带外数据等待读入,则该操作返回TRUE真。否则的话
返回FALSE假,下一个recv()或recvfrom()操作将检索“标记”前一些或所有数据。
应用程序可用SIOCATMARK操作来确定是否有数据剩下。如果在“紧急”(带外)
数据前有常规数据,则按序接收这些数据(请注意,recv()和recvfrom()操作不会在
一次调用中混淆常规数据与带外数据)。argp指向一个BOOL型数,ioctlsocket()在
其中存入返回值。兼容性:
本函数为Berkeley套接口函数ioctl()的一个子集。其中没有与FIOASYNC等价的
命令,SIOCATMARK是套接口层次支持的唯一命令。返回值:
成功后,ioctlsocket()返回0。否则的话,返回SOCKET_ERROR错误,应用程序
可通过WSAGetLastError()获取相应错误代码。
错误代码:
WSANOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。
WSAENETDOWN:WINDOWS套接口实现检测到网络子系统失效。
WSAEINVAL:cmd为非法命令,或者argp所指参数不适用于该cmd命令,或者
该命令
不适用于此种类型的套接口。
WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。
WSAENOTSOCK:描述字不是一个套接口。参见:
socket(), setsockopt(), getsockopt(), WSAAsyncSelect().2. SetForegroundWindow
注释:
函数将窗口设为系统的前台窗口。这个函数可用于改变用户目前正在操作的应用程序. 键盘输入将被传到该窗口。BOOL SetForegroundWindow(
HWND hWnd // handle to window
);参数 hWnd
[输入参数] 需要被激活至前台窗口的句柄返回值
假如该窗口被成功激活至前台,返回非零值,否则返回值为零。3. fflush()
简介:
刷新一个流注释:
#include <stdio.h>
int fflush(FILE *stream);
函数 fflush 强制在所给的输出流或更新流 stream 上,写入在用户空间缓冲的所有数据,使用流的底层写功能函数。流的打开状态不受影响。
如果参数 stream 是 NULL, fflush 刷新 所有 打开的流对文件的操作,与对内存的操作相比,通常比较慢。譬如说,如果我要往文件里面写1个字节,写4096次,这速度比往文件里面写4096字节,只写一次,要慢很多。所以一般操作系统/库会把对文件的操作缓存起来,积累到一定程度,再作真正的物理操作。
你使用stdout相关函数的时候,因为操作系统/库把stdout也看成一个文件句柄(事实上,它也很可能是一个被重定向的文件),所以你的输出,可能会被操作系统/库暂时保存在内存里,这样可能不是你想要的结果,fflush一下,可以保证这样的缓存被清空。 返回值:
成功执行返回 0,否则返回 EOF 并设置全局变量 errno 来指示错误发生。 错误代码:
EBADF
Stream 不是一个打开的流,或者不是用于输出。
函数 fflush 也可能失败并置 errno 为 write(2) 指定的值例子:
int i;
printf("请输入一个数字:");
scanf("%d",&i);
就有问题。因为,可能你要用户输入的时候,屏幕上什么都没有,那段话可能还在内存里呆着呢。所以要写成:
int i;
printf("请输入一个数字:");
fflush(stdout);
scanf("%d",&i);如果你使用STL就不用考虑这样的问题了,STL的input stream接受输入前会自动把相应的output stream flush一下。 你说的fflush(0)是对标准输出流进行刷新,但是一般不这样使用4. atoi() //非atio()
int atoi(const char* s);
这个函数比较简单,用于把字符串s转换成int类型;该函数等价于
(int)strtol(s, (char **)NULL, 10);5. inet_ntoa()
简述:
将网络地址转换成“.”点隔的字符串格式。 #include <winsock.h> char FAR* PASCAL FAR inet_ntoa( struct in_addr in); in:一个表示Internet主机地址的结构。注释:
本函数将一个用in参数所表示的Internet地址结构转换成以“.” 间隔的诸如
“a.b.c.d”的字符串形式。请注意inet_ntoa()返回的字符串存放在WINDOWS套接
口实现所分配的内存中。应用程序不应假设该内存是如何分配的。在同一个线程的
下一个WINDOWS套接口调用前,数据将保证是有效。返回值:
若无错误发生,inet_ntoa()返回一个字符指针。否则的话,返回NVLL。其中的数
据应在下一个WINDOWS套接口调用前复制出来。参见:
inet_addr().6. ntohs()
简述:
将网络字节顺序转换成主机的无符号短整形数。 #include <winsock.h>
u_short PASCAL FAR ntohs( u_short netshort); netshort:网络字节顺序短整形数注释:
本函数将一个16位数从网络字节顺序转换成主机字节顺序。返回值:
ntohs()返回一个主机字节顺序的值。
7. fgets()
fscanf()、fgets()和fgetc()函数
函数fscanf()、fgets()和fgetc()均为文件的顺序读操作函数, 其调用格式
如下:
int fscanf(FILE *stream, char *format, <address-list>);
char fgets(char *string, int n, FILE *steam);
int fgetc(FILE *steam);
fscanf()函数的用法与scanf()函数相似, 只是它是从文件中读到信息。
fscanf()函数的返回值为EOF(即-1), 表明读错误, 否则读数据成功。fgets()函
数从文件中读取至多n-1个字符(n用来指定字符数), 并把它们放入string指向的
字符串中, 在读入之后自动向字符串未尾加一个空字符, 读成功返回string指针,
失败返回一个空指针。fgetc()函数返回文件当前位置的一个字符, 读错误时返
回EOF。
下面程序读取例11产生的test.dat文件, 并将读出的结果显示在屏幕上。
例
#include<stdio.h>
main()
{
char *s, m[20];
int i;
FILE *fp;
fp=fopen("test.dat", "r"); /*打开文字文件只读*/
fgets(s, 24, fp); /*从文件中读取23个字符*/
printf("%s", s); /*输出所读的字符串*/
fscanf(fp, "%d", &i); /*读取整型数*/
printf("%d", i); /*输出所读整型数*/
putchar(fgetc(fp)); /*读取一个字符同时输出*/
fgets(m, 17, fp); /*读取16个字符*/
puts(m); /*输出所读字符串*/
fclose(fp); /*关闭文件*/
getch(); /*等待任一键*/
}
运行后屏幕显示:
Your score of TOEFL is: 617
That's good news
如果将上例中fscanf(fp, "%d", &i)改为fscanf(fp, "%s", m), 再将其后
的输出语句改为printf("%s", m), 则可得出同样的结果。由此可见Turbo C2. 0
中只要是读文字文件, 则不论是字符还是数字都将按其ASCII值处理。 另外还要
说明的一点就是fscanf()函数读到空白符时, 便自动结束, 在使用时要特别注意。
你说的fflush(0)是对标准输出流进行刷新,但是一般不这样使用
//这句有误,#define NULL 0
因此fflush(0)就是fflush(NULL),刷新所有打开的流