You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现布尔函数istoken判断单词是否为Mad-Lib中的token?

你的Mad-Lib Token判断与文件处理方案

嘿,针对你的问题,我来一步步帮你解决:

一、编写istoken布尔函数

你的需求是判断一个单词是不是<adjective>这种格式的token,核心就是检查单词的首尾字符是否符合要求。这里要注意边界情况,比如空字符串或者长度不足2的单词(比如<>)不能算有效token。

结合你给出的代码框架,完善后的istoken函数如下:

#include <stdbool.h>
#include <string.h> // 必须引入,因为要用到strlen

bool istoken(char word[]) {
    // 先排除空指针或长度不够的情况
    if (word == NULL || strlen(word) < 2) {
        return false;
    }
    // 检查首字符是<,尾字符是>
    return (word[0] == '<' && word[strlen(word) - 1] == '>');
}

二、关于fscanf的使用:完全可以,而且是更合适的选择!

你原来的process_file是按行读取内容,这种方式没法把句子拆成单个单词来识别token。用fscanf可以按空白符分隔逐个读取单词,这样就能对每个单词做判断:如果是token,就提示用户输入替换词;如果不是,直接写入输出文件。

修改后的process_file函数(适配你的代码):

#include <stdio.h>
#include <string.h>

#define MAX_WORD_LEN 255 // 和你open_file里的filename长度保持一致就行

void process_file(FILE* in, FILE* out) {
    char word[MAX_WORD_LEN];
    // 用fscanf循环读取每个单词,直到文件末尾
    while (fscanf(in, "%s", word) != EOF) {
        if (istoken(word)) {
            // 从token里提取提示文本,比如把<adjective>变成adjective
            char prompt[MAX_WORD_LEN];
            // 跳过第一个<,复制到倒数第二个字符(跳过>)
            strncpy(prompt, word + 1, strlen(word) - 2);
            prompt[strlen(word) - 2] = '\0'; // 手动添加字符串结束符

            // 提示用户输入对应的单词
            char replacement[MAX_WORD_LEN];
            printf("Enter a %s: ", prompt);
            scanf("%s", replacement);

            // 把替换后的单词写入输出文件,加个空格保持格式
            fprintf(out, "%s ", replacement);
        } else {
            // 不是token,直接写入原单词
            fprintf(out, "%s ", word);
        }
    }
}

三、代码整合注意事项

  1. 记得在你的代码开头添加缺失的头文件:
    #include <stdbool.h>
    #include <string.h>
    #define MAX_WORD_LEN 255 // 替换原来的MAX_LEN,或者保留MAX_LEN用于其他场景
    
  2. 原来的process_file里的MAX_LEN如果不再使用,可以删除,或者调整为MAX_WORD_LEN。
  3. 测试的时候,输入文件里的token要保证是用空白分隔的(比如你的示例句子My sister is a very <adjective> person.里的<adjective>前后有空格),这样fscanf才能正确识别为单个单词。

这样修改后,你的程序就能正常工作:读取输入文件,识别token,让用户输入替换词,最后生成完整的Mad-Lib故事到输出文件里啦!

内容的提问来源于stack exchange,提问作者Stacy Willis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:19:44