我正在编写一个程序,要求用户输入两个单词,以逗号分隔。我还必须编写一个函数,该函数可以找到字符串中的第二个单词,然后将该单词复制到新的内存位置(不带逗号)。该函数应返回一个指向新内存位置的指针。 Main然后应打印原始输入字符串和第二个单词。

到目前为止,这是我的代码:

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

char*secondWordFinder(char *userInput)

int main ()

{

        char*userInput;
        char*result;

        userInput=malloc(sizeof(char)*101);

        printf("Please Enter Two Words Separated by a comma\n");
        fgets(userInput,101, stdin);

        printf("%s",userInput);

        result=secondWordFinder(userInput);
        printf("%s",result);

        free(userInput);

        return 0;
}

    char*secondWordFinder(char *userInput)

    {
        char*userEntry;
        char*ptr;
        int i;
        i=0;

        for(i=0; i<strlen(userInput);i++)
        {
            userEntry=strtok(userInput, ",");
            userEntry=strtok(NULL,",");
            pointer=strcpy(ptr,userEntry);
        }
        return ptr;
    }


我没有在这里输入a`enter代码实际输出我在做什么错?

最佳答案

提取第二个令牌时,您说它后面必须带有逗号。

userEntry = strtok(NULL, ",");


但实际上是换行符。尝试这个:

userEntry = strtok(NULL, ",\n");


如果第二个单词是最后一个单词,则此方法有效,但如果后面紧跟着逗号分隔的单词,则也适用。

是的,您可以放弃循环。

关于c - Strtok的使用并找到第二个元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22183440/

10-11 21:23