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

如何在C语言中从字符串及文件行提取整数与字符值?

从字符串/文件行中提取字符与整数的C语言实现方法

一、处理固定格式字符串(如"A - 3")

C语言的sscanf函数可以按指定格式从字符串中提取不同类型的数据,完全适配你的需求。

如果字符串格式固定(字符 + 空格 + "-" + 空格 + 整数),可以直接精准匹配:

#include <stdio.h>

int main() {
    char input[] = "A - 3";
    char target_char;
    int target_num;
    
    // 按固定格式提取,%c匹配字符,%d匹配整数
    sscanf(input, "%c - %d", &target_char, &target_num);
    
    printf("提取的字符:%c\n提取的整数:%d\n", target_char, target_num);
    return 0;
}

如果字符串中间的分隔符不固定(比如可能有任意非数字字符),可以用%*[^0-9]跳过无关内容:

sscanf(input, "%c %*[^0-9] %d", &target_char, &target_num);

这里%*[^0-9]表示匹配并丢弃所有非数字字符,直到遇到第一个数字为止,适配更灵活的格式。


二、读取指令文件(每行格式如"8 r")

读取文件时,直接用fscanf即可按行提取整数和字符,它会自动跳过换行、空格等空白字符:

#include <stdio.h>

int main() {
    FILE *cmd_file = fopen("commands.txt", "r");
    if (!cmd_file) {
        perror("打开文件失败");
        return 1;
    }
    
    int block_id;
    char move_dir;
    // 循环读取直到文件末尾,%d匹配块号,%c匹配方向字符
    while (fscanf(cmd_file, "%d %c", &block_id, &move_dir) != EOF) {
        // 这里添加你的滑块移动逻辑
        printf("执行操作:块%d向%c移动\n", block_id, move_dir);
    }
    
    fclose(cmd_file);
    return 0;
}

注意事项

  • 确保变量地址正确传入sscanf/fscanf(用&符号,字符和整数变量都需要)
  • 如果需要处理大小写不敏感的方向指令(如"R"和"r"视为同一操作),可以用tolower(move_dir)或toupper(move_dir)统一转换
  • 读取文件前必须检查文件是否成功打开,避免空指针错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:50:29