我正在输入字符串 str
并希望打印其在位置 n
上包含输入字符 c
的所有单词(因此,如果 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 has stopped working...
最佳答案
那个while
循环似乎没有必要。另外,我使用了 fgets()
,而不是 gets()
。我将大部分声明移到了函数的开头。这段代码现在可能可以工作了。
#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
关于c - 如何使用 strtok() 从字符串中的 n 处打印包含字符 c 的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56303707/