#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; 
 }

Wziął wejście od użytkownika za pomocą% C i% s, następnie używany STRCMP do porównywania równości ciągów

0
Rutvikk Walde 22 listopad 2020, 04:47

1 odpowiedź

Najlepsza odpowiedź
  • %c Odczytuje jeden znak i nie dodanie końcowego znaku null, więc musisz dodać, aby użyć danych jako ciągu.
  • Bufor musi być przydzielony i przypisany do str2 przed ich przeczytaniem.
  • %s w scanf() wymaga pointeru char*, więc str2 należy przejść zamiast *str2.
  • %c W printf() wymaga int, a nie char*, więc musisz się odróżnić wskaźnik (automatycznie konwertowany z tablicy).

Spróbuj tego:

#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; 
}
1
Jonathan Leffler 22 listopad 2020, 02:16