用指针数组写每个单词

时间:2016-03-18 13:42:35

标签: c

我有一个分开单词的程序。就像我写“我的名字是阿里” 该程序将编写

Word one: My
Word two: name
word three: is
word four: ali

现在我想添加类似

的内容
int number;
printf("which word do you want to write? number: \n");
scanf("%d",&number)

然后,如果用户写“四”,则假设写ali 或者如果他们写“两个”,则应该写name

int delaUppText(char input[], char* pekare[])
{
    int i=0, j=0;
    char prevLetter=' ';

    for(i=0; input[i]!=NULL; i++)
    {
        if(prevLetter==' '&&input[i]!=' ')
        {
            pekare[j]=&input[i];
            j++;
        }
        prevLetter=input[i];
    }

    for(i=0; input[i]!=NULL; i++)
    {
        if (input[i] == ' ')
        {
            input[i]=NULL;
        }
    }

    return j;
}

int main()
{
    char input[200];
    char* pekare[100];
    int i, antalPekare;
    char answer = 32;
    int nummer;

    do
    {
        system("cls");
        printf("Enter a string: ");

        gets(input);

        printf("\n");

        antalPekare = delaUppText(input, pekare);

        for(i=0;i<antalPekare;i++)
        {
            printf("Ord %d: %s\n", i+1, pekare[i]);
        }

        printf("\nWould you like to try again? [Space]/[q]");
        answer = getch();

        if (answer == 32)
        {
         system("cls");
        }
        else if (answer == 'q')
        {
            break;
        }
    }while (answer == 32);

    return 0;
}

2 个答案:

答案 0 :(得分:0)

不幸的是,编制者不会说英语。

因此,如果您的用户必须输入&#34;四,&#34;,那么请不要期望scanf("%d",&number)会识别单词&#34; four&#34;。它只会识别数字,因此您的用户必须输入&#34; 4&#34;,或者您必须解析输入以了解他输入的数字。用德语输入怎么样?

答案 1 :(得分:0)

1

查看代码,我发现有更好的方法可以做到这一点。  其中一种方法是使用 strtok ,您可以在此处找到更多相关信息。

#include <string.h>
char *strtok(char *str, const char *delim);
char *strtok_r(char *str, const char *delim, char **saveptr);

http://www.tutorialspoint.com/c_standard_library/c_function_strtok.htm

或者您也可以使用 strsep

#include <string.h>
char *strsep(char **stringp, const char *delim);

2

现在,如果你想让它与你拥有的东西一起工作。您需要使用堆内存。又名[malloc,calloc]。原因是一旦你返回主程序,程序的堆栈将会减少,并且程序中曾经存在的堆栈中的内存将不再存在。 现在如果您使用堆,那么您还应该确保只释放一次内存。

对于问题的其余部分,我将让你读到这个。

In C/C++, is char* arrayName[][] a pointer to a pointer to a pointer OR a pointer to a pointer?