编写一子函数,进行字符串解析 /* Internet address. */ struct in_addr { uint32_t s_addr; /* address in network byte order */ }; char *inet_ntoa(struct in_addr in); #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h> #include <arpa/inet.h> int main(int argc,const char * argv[]) { //argv[1]---"192.168.2.68" //argv[2]---"8888" struct sockaddr_in client;//通过网络获得客户端的地址 printf("客户端的IP地址:%S",inet_ntoa(client.sin_addr)); printf("端口号:%d\n",ntohs(client.sin_port)); return 0; } "zhangsan#123456#" "zhangsan" "123456" 参数:3个 参数1:你要解析的字符串 const char * 参数2:解析会获得用户名字符串char * 参数3:解析会获得密码字符串 char * 返回值:成功返回1,失败返回0
时间: 2024-02-21 11:00:31 浏览: 135
字符串解析
下面是一个简单的字符串解析函数,可以解析出两个#号之间的字符串作为用户名,以及第二个#号之后的字符串作为密码:
```c
int parse_string(const char *str, char *username, char *password) {
int i, j, len = strlen(str);
for (i = 0; i < len; i++) {
if (str[i] == '#') {
for (j = i + 1; j < len; j++) {
if (str[j] == '#') {
strncpy(username, str, i);
username[i] = '\0';
strncpy(password, str + j + 1, len - j - 1);
password[len - j - 1] = '\0';
return 1;
}
}
break;
}
}
return 0;
}
```
使用方法如下:
```c
char str[] = "zhangsan#123456#";
char username[20], password[20];
if (parse_string(str, username, password)) {
printf("username: %s\n", username);
printf("password: %s\n", password);
} else {
printf("failed to parse string\n");
}
```
阅读全文