если условие не работает - PullRequest
0 голосов
/ 15 июля 2010

Моя цель - взять две строки и сравнить их концы, если обе они заканчиваются на «ing», «ed» или там не совпадают концы. Это всегда говорит, что строки не совпадают.

#include <stdio.h>
#include <conio.h>
#include <string.h>
int ised(char str[]);
int ising(char str[]);

int  main()
{
    char str1[30],str2[30];
    printf("Enter 1st string:\n");
    gets(str1);
    printf("Enter 2nd string:\n");
    gets(str2);
    if((ising(str1))||(ised(str1))||(ising(str2))||(ised(str2)))
    {
        if(ising(str1)&&ising(str2))
        {
            printf("Both strings end with ing");
        }
        else if(ised(str1)&&ised(str2))
        {
        printf("Both strings end with ed");
        }
        else
        printf("Both strings ending do not match");
    }
    else
    printf("One or both strings do not end with ing or ed.Program Quitting...");
    getch();
    return 0;
}
int ising(char str[])
{
    int len,flag=0;
    len=strlen(str);

        if (!(strncpy(&str[len-3],"ing",3)))
                flag=1;
        else
        flag=0; 
return flag;           
}
int ised(char str[])
{
    int len,flag=0;
    len=strlen(str);

        if( !(strncpy(&str[len-2],"ed",2)) )
                flag=1;
        else
        flag=0; 
return flag;           
}

Ответы [ 4 ]

6 голосов
/ 15 июля 2010

Вы используете strncpy, который выполняет копирование строк, если вы хотите сравнить строки, используйте strncmp.

См .: strncpy и strncmp

3 голосов
/ 15 июля 2010

Похоже, вы используете strncpy, когда вы на самом деле хотите использовать strcmp. Вы пытаетесь сравнить строки, верно?

1 голос
/ 15 июля 2010

Используйте strncmp. И если вы нарезаете строки, не забывайте терминаторы.

0 голосов
/ 15 июля 2010

Было бы неплохо рассказать нам, где у вас проблемы, что вы ожидаете и какой результат вы в настоящее время получаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...