编程实现atoi函数

#include <stdio.h>  
#include <string.h>  
  
#define MAX_SIZE 100  
  
int my_atoi(char *src)  
{  
    int flag = 1;  
      
    int result = 0;  
      
    if(*src == '-')  
    {  
        flag = -1;  
    src++;  
    }  
 
    while(*src != '\0')  
    {  
        if(*src >= '0' && *src <= '9')  
    {  
        result = result * 10 + (*src - '0');  
    }  
    else  
    {  
        break;  
    }  
      
    src++;  
    }  
 
    return result * flag;  
}  
  
int main()  
{  
    int i;  
    int len;  
    int result = 0;  
     
    char src[MAX_SIZE] = {0};  
  
    printf("Please input string:\n");  
    gets(src);  
      
    result = my_atoi(src);  
  
    printf("result = %d\n",result);  
  
    return 0;  
}  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++ socket 编程实现文件传输的基本步骤如下: 1. 创建 Socket 使用 `socket()` 函数创建一个套接字,指定通信域、套接字类型和协议类型。例如: ``` int sockfd = socket(AF_INET, SOCK_STREAM, 0); ``` 2. 绑定地址 使用 `bind()` 函数将套接字与本地地址绑定。例如: ``` struct sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(port); if (bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) { perror("bind error"); exit(1); } ``` 3. 监听连接请求 使用 `listen()` 函数监听连接请求。例如: ``` if (listen(sockfd, 10) == -1) { perror("listen error"); exit(1); } ``` 4. 接受连接请求 使用 `accept()` 函数接受连接请求,创建新的套接字用于数据传输。例如: ``` struct sockaddr_in client_addr; socklen_t client_addr_len = sizeof(client_addr); int client_sockfd = accept(sockfd, (struct sockaddr*)&client_addr, &client_addr_len); if (client_sockfd == -1) { perror("accept error"); exit(1); } ``` 5. 发送文件 使用 `send()` 函数将文件内容发送给客户端。例如: ``` FILE* fp = fopen(filename, "rb"); if (!fp) { perror("fopen error"); exit(1); } char buffer[BUFFER_SIZE]; int nread; while ((nread = fread(buffer, 1, BUFFER_SIZE, fp)) > 0) { if (send(client_sockfd, buffer, nread, 0) == -1) { perror("send error"); exit(1); } } fclose(fp); ``` 6. 接收文件 使用 `recv()` 函数接收客户端发送的文件内容。例如: ``` FILE* fp = fopen(filename, "wb"); if (!fp) { perror("fopen error"); exit(1); } char buffer[BUFFER_SIZE]; int nread; while ((nread = recv(sockfd, buffer, BUFFER_SIZE, 0)) > 0) { if (fwrite(buffer, 1, nread, fp) != nread) { perror("fwrite error"); exit(1); } } fclose(fp); ``` 完整的示例代码如下: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #define BUFFER_SIZE 1024 int main(int argc, char* argv[]) { if (argc != 3) { fprintf(stderr, "Usage: %s <port> <filename>\n", argv[0]); exit(1); } int port = atoi(argv[1]); const char* filename = argv[2]; int sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd == -1) { perror("socket error"); exit(1); } struct sockaddr_in server_addr; memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(port); if (bind(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) { perror("bind error"); exit(1); } if (listen(sockfd, 10) == -1) { perror("listen error"); exit(1); } struct sockaddr_in client_addr; socklen_t client_addr_len = sizeof(client_addr); int client_sockfd = accept(sockfd, (struct sockaddr*)&client_addr, &client_addr_len); if (client_sockfd == -1) { perror("accept error"); exit(1); } FILE* fp = fopen(filename, "rb"); if (!fp) { perror("fopen error"); exit(1); } char buffer[BUFFER_SIZE]; int nread; while ((nread = fread(buffer, 1, BUFFER_SIZE, fp)) > 0) { if (send(client_sockfd, buffer, nread, 0) == -1) { perror("send error"); exit(1); } } fclose(fp); close(client_sockfd); close(sockfd); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值