我正在输入字符串str
,并希望将其包含输入字符c
的所有单词打印在位置n
上(因此,如果n = 1,这是第一个字符)。我正在尝试使用strtok()
进行此操作,但出现了奇怪的崩溃。有提示吗?
int main()
{
char str[100]; gets(str);
while(getchar()!='\n'); ///so that n or c don't scan a newline in them
int n; scanf("%d",&n);
char c; scanf("%c",&c);
char* token = strtok(str, " ");
while (token != NULL) {
if(token[n-1]==c){
printf("%s\n", token);
}
token = strtok(NULL, " ");
}
return 0;
}
我输入了以下内容:
Hi i like mint
2
i
然后该程序突然崩溃,并显示以下消息:
Problem.exe已停止工作...
答案 0 :(得分:0)
该while
循环似乎没有必要。另外,我使用了gets()
而不是fgets()
。我将大多数声明移到了函数的开头。该代码现在可能有效。
#include <stdio.h>
#include <string.h>
int main()
{
int n;
char c, str[100];
fgets(str, 100, stdin);
scanf("%d %c",&n, &c);
char* token = strtok(str, " ");
while (token != NULL) {
if(token[n-1] == c) {
printf("%s\n", token);
}
token = strtok(NULL, " ");
}
return 0;
}
这是我对其进行测试的链接:https://ideone.com/KQkRrG