#c #string #strcmp
#c #строка #strcmp
Вопрос:
#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.
scanf("%c",str1)
будет считан один символ с клавиатуры, также вы не можете назначить строку achar *var
. Возможно, вы захотите поискать malloc .
Ответ №1:
%c
считывает один символ и не добавляет завершающий нулевой символ, поэтому вы должны добавить его, чтобы использовать данные в качестве строки.- Буфер должен быть выделен и назначен
str2
, прежде чем что-то там читать. %s
inscanf()
требует указателяchar*
, поэтомуstr2
его следует передавать вместо*str2
.%c
вprintf()
requiresint
, notchar*
, поэтому вы должны учитывать указатель (автоматически преобразованный из массива).
Попробуйте это:
#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] = ''; // 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. введите строку rorr строка 1 равна r введите строку 2 строка 1 и 2 равна r и orr 1
2. это не позволяет мне поместить вторую строку
3. @RutvikkWalde
%c
предназначен для чтения одного символа. Введите односимвольную строку для строки 1.4. но я хочу написать srting / word как для строки 1, так и для строки 2
5. @RutvikkWalde Вы должны
%s
читать строки, а не%c
.