分享
三行代码  ›  专栏  ›  技术社区  ›  Rutvikk Walde

接受用户%c和%s的字符串作为输入,并确认两个字符串相等

  •  0
  • Rutvikk Walde  · 技术社区  · 2 天前
    #include <stdio.h> 
    #include <string.h>
    int main() {  
        char str1[20];
        char *str2;
        printf("enter string \n"); **// using %c  input**
        scanf("%c",str1);
         printf(" string 1  is %s  \n",str1);
    
      
         printf("enter string 2 \n");
        scanf("%s",*str2); //using %s input
     
         printf(" string 1 and 2 is %c and %s \n",str1,str2);**strong text**
    
        int a=strcmp(str1,str2); //**comparing both**
        printf("%d",a);
        return 0; 
     }
    

    使用%c和%s从用户处获取输入 然后使用strcmp比较字符串的相等性

    1 回复  |  直到 2 天前
        1
  •  1
  •   Jonathan Leffler    2 天前
    • %c 读取一个字符而不添加终止空字符,因此必须添加该字符才能将数据用作字符串。
    • 必须将缓冲区分配给 str2 在那里读东西之前。
    • %s 在里面 scanf() char* ,所以 str2 应该通过而不是 *str2 .
    • 在里面 printf() 要求 int ,不是 ,因此必须尊重指针(从数组自动转换)。

    试试这个:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main() {  
        char str1[20];
        char *str2;
        printf("enter string \n"); // **using %c  input**
        scanf("%c",str1);
        str1[1] = '\0'; // add terminating null-charachter
        printf(" string 1  is %s  \n",str1);
    
        str2 = malloc(102400); // allocate buffer
        if (str2 == NULL) return 1; // check if allocation is successful
        printf("enter string 2 \n");
        // pass correct thing
        scanf("%s",str2); //using %s input
     
        printf(" string 1 and 2 is %c and %s \n",*str1,str2); // pass correct thing for %c
        int a=strcmp(str1,str2); //**comparing both**
        printf("%d",a);
        free(str2); // free the allocated buffer
        return 0; 
    }