2013-03-20 1 views
0

단어의 일부분이 회문인지 여부를 알 수 있어야하는 프로그램을 작성해야했습니다. 이에 대한 해결책은 다음과 같습니다.main 함수 내에 함수의 반환 값을 저장하는 방법. C 프로그래밍

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#include <string.h> 

#define maxLen 100 

int main() { 
    char string[maxLen]; 
    char stringCopy[maxLen]; 

    printf("Please enter a string between 2 and 100 characters\n"); 
    gets(string); 
    strcpy(stringCopy,string); 
    strrev(stringCopy); 

    if(strcmp(string,stringCopy) == 0){ 
     printf("%s is a palindrome\n\n",string); 
    } 
    else{ 
     printf("%s is not a palindrome\n\n",string); 
    } 
    return 0; 
} 

이제 함수를 사용하여 프로그램을 다시 작성해야합니다. 이 코드를 지금 작성하려고하지만 함수의 리턴 값을 사용하는 방법을 알지 못하는 문제가 계속 발생합니다.

#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
#include <string.h> 

#define maxLen 100 

int pallindrome(char); 

int main(){ 
    int rValue; // return value 
    char pString[maxLen]; 

    printf("Please enter a string between 2 and 100 characters\n"); 
    gets(pString); 
    int palindrome(char pString); 

    rValue = palindrome(char pString); 

    if(rValue == 0){ 
     printf("%s is a palindrome\n",pString); 
    } 
    else{ 
     printf("%s is not a palindrome\n",pString); 
    } 
    return 0; 
} 

int palindrome(char pString){ 
    char string; 
    string = pString; 
    char stringCopy; 

    strcpy(stringCopy,string); 
    strrev(stringCopy); 

    if(strcmp(string,stringCopy) == 0){ 
     return 0; 
    } 
    else{ 
     return 1; 
    } 
} 

당신이 볼 수 있듯이

, 나는 사용자가 뭔가 회문인지 여부를 알려 회문()의 반환 값을 사용하려고 해요.

요약하면 주 함수 내에서 함수에서 반환 값을 저장할 수있는 방법이 있는지 알고 싶습니다. 그래서 거기에서 사용할 수 있습니다. 이이 문제를 해결하는 더 좋은 방법이 있지만, 함수에 코드를 넣어

+0

나는 그것이 당신이 말하는 코드의 최하부라고 생각한다. 정교하게 생각해? –

+0

문제는 함수를 호출하는 방법과 c 문자열을 참조하는 방법에 대해 혼란 스럽다는 것입니다. 반환 값은 정상입니다. 'char *'를 사용하여 전체 문자열을 참조하고자 할 때,'char'는 단지 1 문자입니다. 새로운 문자열이 필요하면 배열이나 할당 된 메모리가 필요합니다. –

+0

@ 키이스 당신은 정교 할 수 없었습니까? 귀하의 의견은 "건설적인/주제없는"완벽한 후보입니다. – meagar

답변

1

...

int palindrome(char* string) 
{ 
    char stringCopy[maxLen]; 
    strcpy(stringCopy,string); 
    strrev(stringCopy); 
    return strcmp(string,stringCopy) == 0; 
} 
int main() 
{ 
    char string[maxLen]; 
    printf("Please enter a string between 2 and 100 characters\n"); 
    gets(string); 

    if(palindrome(string)){ 
     printf("%s is a palindrome\n\n",string); 
    } 
    else{ 
     printf("%s is not a palindrome\n\n",string); 
    } 
    return 0; 
} 

당신이 변수에 넣어하려는 경우 당신이 할 수

int main() 
{ 
    char string[maxLen]; 
    int result; 
    printf("Please enter a string between 2 and 100 characters\n"); 
    gets(string); 

    result = palindrome(string); 
    if(result){ 
     printf("%s is a palindrome\n\n",string); 
    } 
    else{ 
     printf("%s is not a palindrome\n\n",string); 
    } 
    return 0; 
} 
+0

고마워요! 나는 그것을 훨씬 더 잘 이해한다고 생각한다. :디 –

0

회문 기능이 잘못되었습니다. 문자열 대신 문자를 전달하는 것입니다. 문자열을 전달하려면 함수 인수는 char *pString 또는 char pString[]과 같아야합니다. 언어의 기초를 닦아내고 코딩을 시작하십시오.

관련 문제