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