C++中string类型用于send函数-socket发送zifu


send函数参数如下:

  ssize_t send(int sockfd, const void *buf, size_t len, int flags);

修改了很多次后终于可行的版本:    

  int TCP::send(const string& msg){
    printf("send msg to server: \n");

    //struct sockaddr_in addr;
    
     //if( send((int)_socketfd, (const void *)msg.c_str(), (size_t)length, 0) < 0)
    //char szText[] = "PC请求连接... \r\n";
    //if( ::sendto(_socketfd, szText, strlen(szText), 0, (sockaddr*)&addr,sizeof(addr)) < 0 )
    int ret;
    if(ret = ::send(_socketfd, (const void *)msg.c_str(),msg.length(), 0) < 0)
    {
      printf("send msg error: %s(errno: %d)\n", strerror(errno), errno);
    }
    return ret;
  }



                
好的,下面是使用指针实现字符传送,从zifu.txt文件读取任意长度的字符,每3个字符存放一个星号,输出并存入"jieguo.txt"文件的C语言程序: ```c #include <stdio.h> #include <stdlib.h> #define MAX_LEN 1000 // 最大字符长度 void insert_star(char *str) { int i = 0; while (str[i] != '\0' && str[i+1] != '\0' && str[i+2] != '\0') { str[i+3] = str[i+2]; // 后移一位 str[i+2] = '*'; // 插入星号 i += 4; // 每隔3个字符插入一个星号 } } int main() { FILE *fin, *fout; char str[MAX_LEN]; // 打开文件 fin = fopen("zifu.txt", "r"); if (fin == NULL) { printf("Error: cannot open zifu.txt\n"); exit(-1); } fout = fopen("jieguo.txt", "w"); if (fout == NULL) { printf("Error: cannot open jieguo.txt\n"); exit(-1); } // 读取文件 fgets(str, MAX_LEN, fin); // 插入星号 insert_star(str); // 输出到文件 fputs(str, fout); // 关闭文件 fclose(fin); fclose(fout); return 0; } ``` 程序的大致思路如下: 1. 定义一个字符数组,用于存放从文件读取的字符。 2. 打开输入和输出文件。 3. 读取输入文件到字符数组。 4. 调用 `insert_star` 函数在字符数组插入星号。 5. 将字符数组的内容输出到输出文件。 6. 关闭输入和输出文件。 `insert_star` 函数的实现如下: ```c void insert_star(char *str) { int i = 0; while (str[i] != '\0' && str[i+1] != '\0' && str[i+2] != '\0') { str[i+3] = str[i+2]; // 后移一位 str[i+2] = '*'; // 插入星号 i += 4; // 每隔3个字符插入一个星号 } } ``` 函数的作用是在字符数组 `str` 每隔3个字符插入一个星号。具体实现方法如下: 1. 从数组的第0个位置开始遍历,如果数组前三个元素都不是结束符 `\0`,就在第2个元素后面插入一个星号。 2. 插入星号后,将后面的字符都后移一位。 3. 继续从下一个需要插入星号的位置开始重复上述过程。 这样,就可以实现每隔3个字符插入一个星号的功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值