输出正确的单词

时间:2017-01-02 13:27:32

标签: c string words

我需要输出一个单词,我输入一些单词。我不能为单词分配一个数字。这是我用一个函数strtok()打破我的句子,然后我迷失了..  对于exmp:" hhh jjjj kkkkk llllll"我输入了3输出:kkkkk

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

int main()
{
    char str[80],*p;
    char sp[20]=" ";
    int i,n=0,num;
    printf("Enter your line: ");
    gets(str);
    p=strtok(str,sp);
    while (p!=NULL){
        for(i=0;i<p;i++){
            printf("%s - [%d]\n",p,i+1);
            p=strtok(NULL,sp);
            n=p;
        }
        n++;
    }
    printf("n: ");
    scanf("%d",&num);
    if(num==n){
        printf("%s",p);
    }

    return 0;
}

1 个答案:

答案 0 :(得分:0)

1)不应使用gets。这就是fgets(str, sizeof str, stdin);

的原因

2)我输入一个单词之前我开始标记行

3)主要算法在于:

while (p != NULL && n < num){ if(++n == num){ printf("%s\n", p); break; } p=strtok(NULL, sp); }

在我的循环中,当它找到单词时,n会上升,当用户输入一个数字并将其等同于num时,它会跳出循环并打印出来。

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

    int main(void){
        char str[80], *p;
        const char *sp = " \n";
        int n = 0, num = 0;

        printf("Enter your line: ");
        fgets(str, sizeof str, stdin);
        printf("n: ");
        scanf("%d", &num);

        p = strtok(str, sp);
        while (p != NULL && n < num){
            if(++n == num){
                printf("%s\n", p);
                break;
            }
            p=strtok(NULL, sp);
        }

        return 0;
    }