gpt4 book ai didi

你能解析带有 `scanf` 的句子并检测换行符吗?

转载 作者:行者123 更新时间:2023-11-30 14:27:44 25 4
gpt4 key购买 nike

我知道怎么做scanf可用于将句子解析为单个单词:

while(1){
scanf("%s", buffer)
...
}

但是,如果我输入像 one two three<return> 这样的句子,如何在 while 循环内部找出我在缓冲区中获取的单词是否是我按 <return> 之前的单词? ?

我想 scanf 几乎不可能,但也许有类似的功能?

最佳答案

您应该使用 fgets() 读取整行,并像这样解析它:

char buffer[BUFSIZE] = {};        // BUFSIZE should be large enough for one line
fgets(buffer, BUFSIZE, stdin); // read from standard input, same as scanf
char *ptr = strtok(buffer, " "); // second argument is a string of delimiters
// can be " ,." etc.
while (ptr != NULL) {
printf("Word: '%s'\n", ptr);

ptr = strtok(NULL, " "); // note the NULL
}

检查当前单词是否是最后一个单词很简单:

while (ptr != NULL) {
char word[BUFSIZE] = {};
strcpy(word, ptr); // strtok clobbers the string it is parsing
// So we copy current string somewhere else.
ptr = strtok(NULL, " ");

bool is_last_word = (ptr == NULL);
// do your thing here with word[]
}

关于你能解析带有 `scanf` 的句子并检测换行符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7369417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com