一 : find函数的使用
find函数的使用
FINDB
FIND 用于查找其他文本字符串 (within_text) 内的文本字符串 (find_text),并从 within_text 的首字符开始返回 find_text 的起始位置编号.也可使用 SEARCH 查找其他文本字符串中的某个文本字符串,但是,FIND 和 SEARCH 不同,FIND 区分大小写并且不允许使用通配符.
FINDB 用于查找其他文本字符串 (within_text) 内的文本字符串 (find_text),并基于每个字符所使用的字节数从 within_text 的首字符开始返回 find_text 的起始位置编号.此函数用于双字节字符.也可使用 SEARCHB 查找其他文本字符串中的某个文本字符串.
语法
FIND(find_text,within_text,start_num)
FINDB(find_text,within_text,start_num)
Find_text 是要查找的文本.
Within_text 是包含要查找文本的文本.
Start_num 指定开始进行查找的字符.within_text 中的首字符是编号为 1 的字符.如果忽略 start_num,则假设其为 1.
提示
使用 start_num 可跳过指定数目的字符.例如,假定使用文本字符串“AYF0093.YoungMensApparel”,如果要查找文本字符串中说明部分的第一个“Y”的编号,则可将 start_num 设置为 8,这样就不会查找文本的序列号部分.FIND 将从第 8 个字符开始查找,而在下一个字符处即可找到 find_text,于是返回编号 9.FIND 总是从 within_text 的起始处返回字符编号,如果 start_num 大于 1,也会对跳过的字符进行计数.
说明
如果 find_text 是空文本 (""),则 FIND 会匹配搜索串中的首字符(即:编号为 start_num 或 1 的字符).
Find_text 中不能包含通配符.
如果 within_text 中没有 find_text,则 FIND 和 FINDB 返回错误值 #VALUE!.
如果 start_num 不大于 0,则 FIND 和 FINDB 返回错误值 #VALUE!.
如果 start_num 大于 within_text 的长度,则 FIND 和 FINDB 返回错误值 #VALUE!.
示例 1 (FIND)
如果您将示例复制到空白工作表中,可能会更易于理解该示例.
操作方法
创建空白工作簿或工作表.
请在“帮助”主题中选取示例.不要选取行或列标题.
从帮助中选取示例.
按 Ctrl+C.
在工作表中,选中单元格 A1,再按 Ctrl+V.
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”.
1
2
A
数据
Miriam McGovern
公式 说明(结果)
=FIND("M",A2) 上面字符串中第一个“M”的位置 (1)
=FIND("m",A2) 上面字符串中第一个“m”的位置 (6)
=FIND("M",A2,3) 从上面字符串的第三个字符开始查找的第一个“M”的位置 (8)
示例 2 (FIND)
如果您将示例复制到空白工作表中,可能会更易于理解该示例.
操作方法
创建空白工作簿或工作表.
请在“帮助”主题中选取示例.不要选取行或列标题.
从帮助中选取示例.
按 Ctrl+C.
在工作表中,选中单元格 A1,再按 Ctrl+V.
若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”.
1
2
3
4
A
数据
Ceramic Insulators #124-TD45-87
Copper Coils #12-671-6772
Variable Resistors #116010
公式 说明(结果)
=MID(A2,1,FIND(" #",A2,1)-1) 在上面第一个字符串中,抽取从第一个字符到“#”的文本 (Ceramic Insulators)
=MID(A3,1,FIND(" #",A3,1)-1) 在上面第二个字符串中,抽取从第一个字符到“#”的文本 (Copper Coils)
=MID(A4,1,FIND(" #",A4,1)-1) 在上面第三个字符串中,抽取从第一个字符到“#”的文本 (Variable Resistors)
示例 (FINDB)
在以下示例中,FIND 返回 2,因为空文本 ("") 位于字符串中的第二个位置,而 FINDB 返回 3,因为每个字符均按字节进行计数,而第一个字符包含 2 个字节,所以第二个字符从第三个字节开始.
=FIND("","") 等于 2
=FINDB("","") 等于 3
二 : getsockopt函数的使用
函数原型为:
#include <netinet/socket.h>
int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);
Return: 0 if OK, –1 on error
这个函数用于获得socket的各种特性,即socket options. 结果放在函数的后两个参数中,这两个参数是value-result。[www.61k.com]
sockfd 是所要查看的socket的file descriptor
level 和 optname 在Figure 7.1 中(Unix Network Programming, P.193)
optval,getsockopt() 函数把所得到的socket option的值放到这个参数之中。它的数据类型要和Figure 7.1中的Datatype一致。
optlen 作为参数是表示optval 的大小。作为结果是表示返回的 optval 的大小。
#include "unp.h" #include <netinet/tcp.h> int main(int argc, char **argv) { int fd, val; socklen_t len; char strres[128]; len = sizeof(val); fd = Socket(AF_INET, SOCK_STREAM, 0); if(getsockopt(fd, SOL_SOCKET, SO_RCVBUF, &val, &len) == -1) { err_ret("getsockopt error"); } else { if(len != sizeof(int)) snprintf(strres, sizeof(strres), "sizeof (%d) not sizeof(int)", len); else snprintf(strres, sizeof(strres), "%d", val); printf("default = %s\n", strres); } close(fd); exit(0); }
这里是查看receive buffer的大小。
三 : WSAStartup()函数的使用
int WSAStartup(__in WORD wVersionRequested,__out LPWSADATA lpWSAData);
格式: int PASCAL FAR WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData );
参数: wVersionRequested 欲使用的 Windows Sockets API 版本
lpWSAData指向 WSADATA 资料的指标
传回值: 成功 – 0
失败 - WSASYSNOTREADY / WSAVERNOTSUPPORTED /WSAEINVAL
说明: 此函式「必须」是应用程式呼叫到 Windows Sockets DLL 函式中的第一个,也唯有此函式呼叫成功後,才可以再呼叫其他 WindowsSockets DLL 的函式。此函式亦让使用者可以指定要使用的 Windows Sockets API 版本,及获取设计者的一些资讯。程式中我们要用 Winsock 1.1,所以我们在程式中有一段为:
WSAStartup((WORD)((1<<8)|1),(LPWSADATA) &WSAData)
其中 ((WORD)((1<<8)|1) 表示我们要用的是 Winsock 「1.1」版本,而WSAData 则是用来储存由系统传回的一些有关此一 Winsock Stack 的资料。
#include"stdafx.h"
The WSAStartup function initiates use of the Winsock DLL by a process.
在使用WSAStartup的使用出现了下面的问题:
源码:
出现的错误信息:
错误1error LNK2019: 无法解析的外部符号 _WSAStartup@8,该符号在函数 _main 中被引用CompletePortDemo.objCompletePortDemo
解决方法:添加#pragmacomment(lib,"ws2_32.lib")
正确代码:#include"stdafx.h"
61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1