| 
 | 
 
 
发表于 2021-6-27 10:18:54
|
显示全部楼层
   本楼为最佳答案    
 
 
C语言不能用 == 比较字符串 
两个代码,一样的功能,你喜欢第2个吗? 
 
- #include <stdio.h>
 
 - #include <stdlib.h>
 
 - #include <string.h>
 
  
- typedef struct String {
 
 -     char* str;
 
 -     int length;
 
 - } string;
 
  
- string init(void) {
 
 -     string s;
 
 -     int len = 0;
 
 -     s.str = malloc(len + 1);
 
 -     s.str[0] = '\0';
 
 -     s.length = len;
 
 -     return s;
 
 - }
 
  
- void add(string *s, char *elem) {
 
 -     /*
 
 -     int i = s->length;
 
 -     do {
 
 -         char* s.str = (char*)realloc(s.str, i*sizeof(i));
 
 -         s.str[i] = *elem;
 
 -         s.length = i;
 
 -         i++;
 
 -     } while(*elem != '\0')
 
 -     */
 
 -     int length = strlen(s->str) + strlen(elem) + 1;
 
 -     s->str = realloc(s->str, length);
 
 -     strcat(s->str, elem);
 
 - }
 
  
- int main(void) {
 
 -     string a = init();
 
 -     add(&a, "hello");
 
 -     //if(a.str == "hello") // 这里为 false,不知道怎么了
 
 -     if(!strcmp(a.str, "hello"))
 
 -         printf("1");
 
 -     return 0;
 
 - }
 
 
  复制代码 
- #include<stdio.h>
 
 - #include<stdlib.h>
 
 - #include<string.h>
 
  
- typedef struct String {char* str;
 
 - int length;} string;
 
  
- string init(void) {
 
 -            string s;
 
 -   int len =0; s.str = malloc(len + 1);
 
 -  s.str[0]= '\0';  s.length = len;
 
 -        return  s;
 
 - }
 
  
- void add(string *s, char *elem) 
 
 - {
 
 -     /*
 
 -     int i = s->length;
 
 -     do {
 
 -         char* s.str = (char*)realloc(s.str, i*sizeof(i));
 
 -         s.str[i] = *elem;
 
 -         s.length = i;
 
 -         i++;
 
 -     } while(*elem != '\0')
 
 -     */int length = strlen(s->str) + strlen(elem) + 1;
 
 -  s->str = realloc(s->str, length);strcat(s->str, elem);}
 
  
- int main(void) {
 
 - string a = init();add(&a, "hello");
 
 -     //if(a.str == "hello") // 这里为 false,不知道怎么了
 
 - if(!strcmp(a.str, "hello"))
 
 -         printf("1");
 
 -          return 0;}
 
 
  复制代码 |   
 
 
 
 |