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

c8ib6hqw  于 2023-01-25  发布在  其他
关注(0)|答案(2)|浏览(133)
#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比较字符串的相等性

mzsu5hc0

mzsu5hc01#

  • %c读取一个字符,但不添加终止空字符,因此必须添加该字符才能将数据用作字符串。
  • 在读取str2之前,必须将缓冲区分配给str2
  • scanf()中的%s需要指针char*,因此应传递str2而不是*str2
  • printf()中的%c需要int,而不是char*,因此必须遵从指针(从数组自动转换而来)。

试试这个:

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

o2g1uqev2#

#include<stdio.h>
#include<string.h>
int main()
{
char str1[50];
printf("Enter str1:\n");
scanf("%s", str1);   //Using %s input 

char str2[50];
char c;
int i  = 0;
printf("Enter str2:\n");
while(c != '\n')
{
fflush(stdin);  
scanf("%c", &c);  //Using %c input
str2[i] = c;
i++;
}
str2[i-1] = '\0'; 
printf("Str1 is: %s\n", str1);
printf("Str2 is: %s\n", str2);
printf("When comparing str1 and str2 the value it returns is %d", 
strcmp(str1,str2));
return 0;
}

注:当输入字符串2时,逐个字符输入值。例如:-输入str 2:

  • w
  • r

在你完成你的单词后,按两次回车键。

相关问题