我需要输出一个单词,我输入一些单词。我不能为单词分配一个数字。这是我用一个函数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;
}
答案 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;
}