40分,求助
查看原帖
40分,求助
689281
Linisdjxmk楼主2024/11/3 21:56
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char ctou(char x)
{
    if((x >= 'A' && x <= 'Z') || x == ' ')
        return x;
    else
        return 'A' - 'a' + x;
}

char * toupper2(char *x)
{
    int len = strlen(x);
    char *ret = malloc(sizeof(char) * (len + 1));
    int c = 0;
    while(c < len)
    {
        ret[c] = ctou(x[c]);
        c++;
    }
    ret[c] = 0;
    return ret;
}

int main(void)
{
    char input[12];
    scanf("%s",input);
    int end = 0;
    int end2 = 0;
    char * in2 = malloc(sizeof(char));
    char * upin = toupper2(input);
    int x = getchar();
    int first = 1;
    if(x == '\n' || x == EOF)
        x = getchar();
    int wordcount = 1;
    int meetk = 0;
    char * rawinput = malloc(sizeof(char));
    while((first ? x : (x = getchar())) != '\n' && x != EOF)
    {
        first = 0;
        rawinput[end2] = x;
        char * raw2t = realloc(rawinput,sizeof(char) * (end2 + 3));
        rawinput = raw2t;
        end2 ++;
        if(meetk == 0 && x == ' ')
            continue;
        if(meetk == 0)
            meetk = 1;
        if(x == ' ' && meetk == 1)
        {
            wordcount++;
            meetk = 2;
        }
        else if(x == ' ' && meetk == 2)
        {
            continue;
        }
        if(x != ' ' && meetk == 2)
            meetk = 1;
        in2[end] = ctou(x);
        char * in2t = realloc(in2,sizeof(char) * (end + 3));
        in2 = in2t;
        end ++;
    }
    rawinput[end2] = 0;
    in2[end] = 0;
    char **wordlist = malloc(sizeof(char *) * wordcount);
    int c = 0;
    int wp = 0;
    int c2 = 0;
    int flag = 0;
    int index[wordcount];
    index[0] = 0;
    while(c2 < strlen(rawinput))
    {
        if(flag == 0 && rawinput[c2] == ' ')
        {
            ;
        }
        else if(flag == 0 && rawinput[c2] != ' ')
        {
            flag = 1;
            index[wp] = c2;
            wp++;
        }
        else if(flag != 0 && rawinput[c2] != ' ')
        {
            ;
        }
        else if(flag != 0 && rawinput[c2] == ' ')
        {
            flag = 0;
        }
        c2++;
    }
    c2 = 0;
    wp = 0;
    flag = 0;
    while(c2 < strlen(in2))
    {
        if(in2[c2] == 0)
            break;
        if(in2[c2] == ' ')
        {
            wordlist[wp][c] = 0;
            flag = 0;
            c = 0;
            c2++;
            wp++;
            continue;
        }
        if(flag == 0)
        {
            flag = 1;
            wordlist[wp] = malloc(sizeof(char));
            wordlist[wp][c] = in2[c2];
        }
        else
        {
            char * wpt = realloc(wordlist[wp],sizeof(char) * (c + 3));
            wordlist[wp] = wpt;
            wordlist[wp][c] = in2[c2];
        }
        c++;
        c2++;
    }
    free(in2);
    c = 0;
    c2 = 0;
    flag = -1;
    while(c < wordcount)
    {
        if(strcmp(wordlist[c],upin) == 0)
        {
            c2++;
            if(flag == -1)
            {
                flag = index[c];
            }
        }
        free(wordlist[c]);
        c++;
    }
    printf("%d",c2? c2 : -1);
    if(!c2)
    {
        putchar('\n');
    }
    else
    {
        printf(" %d\n",flag);
    }
    free(upin);
    free(rawinput);
    free(wordlist);
}
2024/11/3 21:56
加载中...