나는 단어나 문자를 입력할 수 있는 프로그램을 얻으려고 하고, 저장 후 사용자가 입력하는 인쇄하십시오 때까지는 다시 프로그램을 종료합니다. 내 코드는 다음과 같습니다.
#include <stdio.h>
int main()
{
char input[40];
char check[40];
int i=0;
printf("Hello!\nPlease enter a word or character:\n");
gets(input);
printf("I will now repeat this until you type it back to me.\n");
while (check != input)
{
printf("%s\n", input);
gets(check);
}
printf("Good bye!");
return 0;
}
문제는 난 계속 받고 있는 인쇄면이 때도 사용자가 입력 문자열 입력 (확인) 일치시킵니다 원본 (input). 내가 잘못 비교한 결과 두?
확인을 몇 가지: '가' 는 '안전하지 않은 및 프리츠 (입력, 스이제로프 (입력), stdin) 로 교체 할 수 있도록 don& # 39,' t get 버퍼입니다 오버플로입니다.
다음으로, 문장열 비교할 수 있는 0 의 값을 사용해야 합니다 ',' 스트라히모프 복귀하십시오 두 문장열 일치시킵니다 나타냅니다. Name. domain. 항등 연산자 (예: '! =') 는 두 개의 주소, 반대로 개별 '의 δ1 저들이요 챨 문장열
반면 정보기술 (it) 및 또한 예제에서와 won& # 39, t ',', '& # 39 에서 문제가 발생할 프리츠 개행 문자를 \n& # 39 의 버퍼를' 도;;; '가 ()' 의 경우 사용자의 입력을 비해 fgets () 기능으로 문자열들을 읽는다 '를 지원하지 않습니다.', ',' 이 같은 ipv6-literal. 문자열으로 " abc" 해당되어서는 결코 제외하고 버퍼 너무 작아 있기 때문에 '& # 39, \n& # 39,' wouldn& # 39, t fit 항목이없습니다).
편집: 맞아 및 초고속 미스트리샤르 의해 다시 한 번.
['스트라히모프'] 사용하여 (http://www.tutorialspoint.com/c_standard_library/c_function_strcmp.htm).
이는 '스트라이스트' 라이브러리, 매우 인기가 높다. '0' 스트라히모프 복귀하십시오 경우 문자열은 같다. 지켜보리니 [이] (https://stackoverflow.com/questions/34824838/what-does-strcmp-exactly-returns-in-c/34825545 # 34825545) '에 대한 더 나은 설명이 뭐라구오 스트라히모프 되돌려줍니다.
기본적으로 해야 할 수 있습니다.
while (strcmp(check,input) != 0)
또는
while (!strcmp(check,input))
또는
while (strcmp(check,input))
[이] (http://www.programiz.com/c-programming/library-function/string.h/strcmp) '에' 스트라히모프 자습서는 확인할 수 있습니다.
array1==array2
그들을 챨 의해 챨 비교해야 합니다. 이를 위해 다시 부울입니다 (진정한 1, 거짓값 0) 값을 함수를 사용할 수 있습니다. 테스트 중인 상태를 루프지 동시에 사용할 수 있습니다 다음
이거 드세요.
#include <stdio.h>
int checker(char input[],char check[]);
int main()
{
char input[40];
char check[40];
int i=0;
printf("Hello!\nPlease enter a word or character:\n");
scanf("%s",input);
printf("I will now repeat this until you type it back to me.\n");
scanf("%s",check);
while (!checker(input,check))
{
printf("%s\n", input);
scanf("%s",check);
}
printf("Good bye!");
return 0;
}
int checker(char input[],char check[])
{
int i,result=1;
for(i=0; input[i]!='\0' || check[i]!='\0'; i++) {
if(input[i] != check[i]) {
result=0;
break;
}
}
return result;
}
선택해제하여 주소를 알려주는 것은 무엇입니까? 이 슬라이드에서는 구성도를:
---------- ----------
| 0x4000 | | 0x4004 |
| 1 | | 7 |
---------- ----------
, 주소를 메모리에 저장된 emc. 정수 1 은 그림의 0x4000. 왜 dell. 주소가? 이 때문에 많은 정수, 메모리 용량이 크고 저장할 수 있는 것처럼 많은 가족들을요 집이었 도시이름이잔아 수 있습니다. 각 정수, 메모리 위치를 저장됩니까 각각의 제품군뿐입니다 집 안에 있습니다. , 주소 식별됩니다 각각의 하우스는 각 메모리 위치는 식별됩니다 주소입니다.
메모리 위치를 나타내는 두 개의 서로 다른 두 상자에서 구성도를. 그 집 것처럼 생각할 수 있습니다. 정수 1 이 메모리 위치에 있는 주소 0x4000 (Elm, 세인트 " dl4000 랑하니 ";). 정수 7 메모리 위치에 있는 주소 0x4004 (Elm, 세인트 " 4004 랑하니 ";).
생각해 본 적이 있지만, 해당 프로그램 '1 대 7 wasn& # 39 비교한 결과, t. 전송되었기 0x4000 0x4004 대한 비교. 이러한 상황이 있을 때 어떻게 될까?
---------- ----------
| 0x4000 | | 0x4004 |
| 1 | | 1 |
---------- ----------
이 두 정수의 오른길로 동일하지만, 주소는 서로 다르다. 프로그램에 충족합니다 비교합니다.
비교, 각 문자를 기준으로 비교해 볼 때마다 문장열 위해 노력하고 있다. 이를 위해 내장된 문자열 함수은 호출됨 스트라히모프 (input1, input2) 사용할 수 있습니다. 헤더 파일 ',' # include< string.h> 사용해야 합니다.
이거라도 붙일래요 코드:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char s[]="STACKOVERFLOW";
char s1[200];
printf("Enter the string to be checked\n");//enter the input string
scanf("%s",s1);
if(strcmp(s,s1)==0)//compare both the strings
{
printf("Both the Strings match\n");
}
else
{
printf("Entered String does not match\n");
}
system("pause");
}
int strcmp(char input[], char check[])
{
for (int i = 0;; i++)
{
if (input[i] == '\0' && check[i] == '\0')
{
break;
}
else if (input[i] == '\0' && check[i] != '\0')
{
return 1;
}
else if (input[i] != '\0' && check[i] == '\0')
{
return -1;
}
else if (input[i] > check[i])
{
return 1;
}
else if (input[i] < check[i])
{
return -1;
}
else
{
// characters are the same - continue and check next
}
}
return 0;
}
이 역할을 잘 됐으면 좋겠다 "고 말했다.
>. 제대로 비교하십시오 문장열 어떻게 합니까?
char input[40];
char check[40];
strcpy(input, "Hello"); // input assigned somehow
strcpy(check, "Hello"); // check assigned somehow
// insufficient
while (check != input)
// good
while (strcmp(check, input) != 0)
// or
while (strcmp(check, input))
C 에서, string 는 표준 라이브러리 사양명세.
>. A 는 일련의 문자가 null 문자를 포함하여 첫 연속 string 의해 종료되었습니다. C11 & # 167 7.1.1 1.
'위' 입력입니다 string 아닙니다. '입' 가 [어레이입니다 40 챨] (https://cdecl.org/? q = char+input% 5b40%5d).
'입' 이 콘텐트입니다 string 될 수 있습니다.
대부분의 경우, 주소 등) 로 사용되고, 이는 어레이에서는 표현식에서는 1 요소.
아래 '와' 에서는 '확인' 을 첫 번째 요소는 해당 주소를 입력 후 해당 주소에는 비교할지.
check != input // Compare addresses, not the contents of what addresses reference
비교해 보면, 우리는 그 후 그들은 충족합니다 strings 사용하기 위해 필요한 데이터를 가리키십시오.
>. int 스트라히모프 (const char const char s1, s2), ''
>. 스트라히모프 s1 '을' 이 '는' 기능은 문자열을 string 's2' 에 의해 연결된 abc.
>. 이 함수는 다음과 같음, 보다 큰 정수 ',' 스트라히모프 이하일, '보다' 이 (가) 에 따라 구체화하십시오 abc. s1, s2 '가' 보다 같거나 혹은 구체화하십시오 지적했다.
코드 경우 찾을 수 있을 뿐 아니라 문자열은 동일한 데이터를 적은 있지만, 어느 때 보다 / 서로 다르다.
아래 참일 때 구체화하십시오 서로 다르다.
strcmp(check, input) != 0
대한 분석, 참조 [내 스스로 만드는 '스트라히모프 ()' 기능을] (https://stackoverflow.com/a/54136499/2410359)
#include<stdio.h>
#include<string.h>
int main()
{
char s1[50],s2[50];
printf("Enter the character of strings: ");
gets(s1);
printf("\nEnter different character of string to repeat: \n");
while(strcmp(s1,s2))
{
printf("%s\n",s1);
gets(s2);
}
return 0;
}
이것은 매우 단순한 솔루션 전달하십시오 원하는 대로 출력입니다 있는 것입니다.