第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

作業(yè)社區(qū)

探索學(xué)習(xí)新天地,共享知識資源!

0 提交作業(yè)
0 布置作業(yè)
0 滿分作業(yè)
得分 100
學(xué)習(xí)任務(wù)

浪潮君 的學(xué)生作業(yè):

#include #include #include class String { private: char *data_; // 指向動態(tài)分配的字符數(shù)組,存儲字符串內(nèi)容 size_t size_; // 字符串長度,不包含結(jié)尾的 '\0' public: // 構(gòu)造函數(shù):根據(jù)傳入的 C 字符串初始化對象 explicit String(const char *str) { if (str == NULL) { // 如果傳入空指針,初始化為空字符串 size_ = 0; data_ = new char[1]; data_[0] = '\0'; // 以空字符結(jié)束 } else { // 計(jì)算字符串長度 size_ = std::strlen(str); // 分配內(nèi)存空間,包含結(jié)尾空字符 data_ = new char[size_ + 1]; // 復(fù)制字符串內(nèi)容 std::strcpy(data_, str); } } // 析構(gòu)函數(shù):釋放動態(tài)分配的內(nèi)存 ~String() { delete[] data_; } // 拷貝構(gòu)造函數(shù):實(shí)現(xiàn)深拷貝 String(const String &other) { size_ = other.size_; data_ = new char[size_ + 1]; std::strcpy(data_, other.data_); } // 賦值運(yùn)算符重載:實(shí)現(xiàn)深拷貝,防止自賦值 String &operator=(const String &other) { if (this != &other) { delete[] data_; // 釋放原有內(nèi)存 size_ = other.size_; data_ = new char[size_ + 1]; std::strcpy(data_, other.data_); } return *this; } // 返回字符串長度 size_t size() const { return size_; } // 下標(biāo)運(yùn)算符重載(非 const 版本):允許修改字符 char &operator[](size_t index) { if (index >= size_) { // 越界訪問,拋出標(biāo)準(zhǔn)異常 throw std::out_of_range("index out of range"); } return data_[index]; } // 下標(biāo)運(yùn)算符重載(const 版本):只讀訪問字符 const char &operator[](size_t index) const { if (index >= size_) { // 越界訪問,拋出標(biāo)準(zhǔn)異常 throw std::out_of_range("index out of range"); } return data_[index]; } // 返回底層 C 風(fēng)格字符串指針,方便與標(biāo)準(zhǔn)庫兼容 const char *c_str() const { return data_; } }; // 全局輸出流運(yùn)算符重載:實(shí)現(xiàn)直接輸出 String 對象 std::ostream &operator

得分 100
學(xué)習(xí)任務(wù)

浪潮君 的學(xué)生作業(yè):

#include #include #include // 自定義 String 類,模擬 std::string 的基本行為 class String { private: char *data_; // 指向字符串?dāng)?shù)據(jù)的動態(tài)分配內(nèi)存 size_t size_; // 字符串長度,不包括結(jié)尾符 '\0' public: // 顯式構(gòu)造函數(shù):從 C 字符串初始化 String 對象 explicit String(const char *str) { if (str == NULL) { // 空指針處理,創(chuàng)建一個空字符串 size_ = 0; data_ = new char[1]; data_[0] = '\0'; } else { // 正常字符串,計(jì)算長度并復(fù)制內(nèi)容 size_ = std::strlen(str); data_ = new char[size_ + 1]; // 多分配 1 個字節(jié)用于 '\0' std::strcpy(data_, str); // 拷貝字符串內(nèi)容 } } // 析構(gòu)函數(shù):釋放動態(tài)分配的內(nèi)存,防止內(nèi)存泄漏 ~String() { delete[] data_; } // 拷貝構(gòu)造函數(shù):深拷貝另一個 String 對象 String(const String &other) { size_ = other.size_; // 拷貝長度 data_ = new char[size_ + 1]; // 分配新內(nèi)存 std::strcpy(data_, other.data_); // 拷貝字符串內(nèi)容 } // 拷貝賦值運(yùn)算符:避免自我賦值,釋放舊內(nèi)存后深拷貝 String &operator=(const String &other) { if (this != &other) { delete[] data_; // 釋放舊內(nèi)存 size_ = other.size_; // 拷貝長度 data_ = new char[size_ + 1]; // 分配新內(nèi)存 std::strcpy(data_, other.data_); // 拷貝內(nèi)容 } return *this; // 返回自身引用以支持鏈?zhǔn)劫x值 } // 獲取字符串長度(不含 '\0') size_t size() const { return size_; } // 下標(biāo)運(yùn)算符重載:非 const 版本,返回字符引用,可修改內(nèi)容 char &operator[](size_t index) { if (index >= size_) { throw std::out_of_range("Index out of range"); } return data_[index]; } // 下標(biāo)運(yùn)算符重載:const 版本,返回只讀字符引用 const char &operator[](size_t index) const { if (index >= size_) { throw std::out_of_range("Index out of range"); } return data_[index]; } }; // 主函數(shù):測試自定義 String 類的基本功能 int main() { String str("hello"); // 創(chuàng)建字符串對象 str,內(nèi)容為 "hello" str[0] = 'w'; // 修改第 0 個字符為 'w' str[1] = 'x'; // 修改第 1 個字符為 'x' // 逐字符打印修改后的字符串內(nèi)容 for (size_t i = 0; i < str.size(); ++i) { std::cout

得分 100
學(xué)習(xí)任務(wù)

北城半夏4806197 的學(xué)生作業(yè):

serve.c #include #include #include #include #include /* See NOTES */ #include #include #include #include #include #include #define LOGIN_SUCCESS 1 #define LOGIN_FAILURE 0 typedef struct { char *ip; unsigned char flag; struct sockaddr_in *peer_addr; }thread_type; void printf_client_info(struct sockaddr_in *addr,char *buf) { printf("===============================\n"); printf("user IP : %s\n",inet_ntoa(addr->sin_addr)); printf("user port : %d\n", ntohs(addr->sin_port)); printf("user data : %s\n",buf); } //1.初始化socket連接 int init_socket(const char *ip,const char *port) { int sockfd = 0; struct sockaddr_in my_addr; socklen_t len = sizeof(my_addr); //1.通過socket創(chuàng)建文件描述符 sockfd = socket(AF_INET,SOCK_DGRAM ,0); if(sockfd < 0) { perror("Fail to socket!"); exit(EXIT_FAILURE); } //2.填充服務(wù)器自己的ip地址和port,然后綁定 memset(&my_addr,0,sizeof(my_addr)); my_addr.sin_family = AF_INET; my_addr.sin_port = htons(atoi(port)); my_addr.sin_addr.s_addr = inet_addr(ip); if(bind(sockfd,(struct sockaddr *)&my_addr,len) < 0) { perror("Fail to bind"); return -1; } return sockfd; } void recv_data(int new_sockfd) { int n = 0; char buf[1024] = {0}; struct sockaddr_in client_addr; socklen_t len = sizeof(client_addr); //3.發(fā)送數(shù)據(jù) while(1) { memset(buf,0,sizeof(buf)); n = recvfrom(new_sockfd,buf,sizeof(buf),0,(struct sockaddr *)&client_addr,&len); if(n < 0) { perror("Fail to recvfrom"); exit(EXIT_FAILURE); } printf_client_info(&client_addr,buf); if(strncmp(buf,"quit",4) == 0) break; } close(new_sockfd); return ; } void *message_thread(void *arg) { thread_type *packet = (thread_type *)arg; char *ip = packet->ip; unsigned char login_flag = packet->flag; struct sockaddr_in *addr = packet->peer_addr; //創(chuàng)建套接字,獲得用戶數(shù)據(jù),綁定0號端口,系統(tǒng)會隨機(jī)分配一個可用的端口 int new_sockfd = init_socket(ip,"0"); sendto(new_sockfd,&login_flag,sizeof(login_flag),0,(struct sockaddr *)addr,sizeof(struct sockaddr_in)); recv_data(new_sockfd); pthread_exit(NULL); } void user_login(const char *ip,const char *port) { int n = 0; char buf[1024] = {0}; struct sockaddr_in client_addr; socklen_t len = sizeof(client_addr); unsigned char login_flag; int sockfd; thread_type packet; pthread_t tid; //1.創(chuàng)建套接字,獲得用戶數(shù)據(jù) sockfd = init_socket(ip,port); //2.接收登錄數(shù)據(jù) while(1) { memset(buf,0,sizeof(buf)); n = recvfrom(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&client_addr,&len); if(n < 0) { perror("Fail to recvfrom"); exit(EXIT_FAILURE); } printf("key = %s\n",buf); login_flag = (strncmp(buf,"root",4) == 0) ? LOGIN_SUCCESS : LOGIN_FAILURE; //說明此時秘鑰正確 if(login_flag == LOGIN_SUCCESS) { packet.ip = (char *)ip; packet.flag = login_flag; packet.peer_addr = &client_addr; //創(chuàng)建子線程,子線程準(zhǔn)備接收當(dāng)前用戶數(shù)據(jù),主線程接續(xù)接收新用戶的秘鑰 pthread_create(&tid,NULL,message_thread,(void *)&packet); }else{ //秘鑰不正確,使用原始端口回復(fù)信息 sendto(sockfd,&login_flag,sizeof(login_flag),0,(struct sockaddr *)&client_addr,len); } //把線程設(shè)置為分離式 pthread_detach(tid); } return ; } //./a.out ip port int main(int argc, const char *argv[]) { int sockfd; unsigned char login_flag; if(argc < 3) { fprintf(stderr,"Usage : %s ip port!\n",argv[0]); exit(EXIT_FAILURE); } //1.接收用戶的秘鑰,準(zhǔn)備登錄 user_login(argv[1],argv[2]); return 0; } client #include #include #include #include #include /* See NOTES */ #include #include #include #define LOGIN_SUCCESS 1 #define LOGIN_FAILURE 0 void user_login(int sockfd,struct sockaddr_in *addr,struct sockaddr_in *new_addr,int len) { int n = 0; char buf[1024] = {0}; unsigned char flag = LOGIN_FAILURE; //發(fā)送數(shù)據(jù) while(1) { putchar('>'); memset(buf,0,sizeof(buf)); fgets(buf,sizeof(buf),stdin); buf[strlen(buf) - 1] = '\0'; //'\n'-->'\0' n = sendto(sockfd,buf,strlen(buf),0,(struct sockaddr *)addr,len); if(n < 0) { perror("Fail to sendto"); exit(EXIT_FAILURE); } recvfrom(sockfd,&flag,sizeof(flag),0,(struct sockaddr *)new_addr,&len); //說明登錄成功,否則繼續(xù)登錄 if(flag == LOGIN_SUCCESS) break; } return ; } void send_message(int sockfd,struct sockaddr_in *addr,int addr_len) { int n = 0; char buf[1024] = {0}; //發(fā)送數(shù)據(jù) while(1) { printf("Input : "); memset(buf,0,sizeof(buf)); fgets(buf,sizeof(buf),stdin); buf[strlen(buf) - 1] = '\0'; //'\n'-->'\0' n = sendto(sockfd,buf,strlen(buf),0,(struct sockaddr *)addr,addr_len); if(n < 0) { perror("Fail to sendto"); exit(EXIT_FAILURE); } if(strncmp(buf,"quit",4) == 0) break; } return ; } //./a.out ip port int main(int argc, const char *argv[]) { int sockfd = 0; struct sockaddr_in peer_addr; struct sockaddr_in server_addr; socklen_t len = sizeof(peer_addr); if(argc < 3) { fprintf(stderr,"Usage : %s ip port!\n",argv[0]); exit(EXIT_FAILURE); } //1.通過socket創(chuàng)建文件描述符 sockfd = socket(AF_INET,SOCK_DGRAM ,0); if(sockfd < 0) { perror("Fail to socket!"); exit(EXIT_FAILURE); } //2.填充服務(wù)器的ip地址和port,方便綁定 memset(&peer_addr,0,sizeof(peer_addr)); peer_addr.sin_family = AF_INET; peer_addr.sin_port = htons(atoi(argv[2])); peer_addr.sin_addr.s_addr = inet_addr(argv[1]); //3.發(fā)送登錄數(shù)據(jù) memset(&server_addr,0,sizeof(server_addr)); user_login(sockfd,&peer_addr,&server_addr,len); //4.發(fā)送交互數(shù)據(jù) send_message(sockfd,&server_addr,len); //5.關(guān)閉文件描述符 close(sockfd); return 0; } 【圖片】 【圖片】

微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號