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

C语言输入内容写入文本文件仅保留最后一个单词问题求解

问题修复方案

根因分析

  • 写入文件时未遍历已经存储了所有输入内容的二维数组,仅执行了1次写入操作
  • fprintf参数使用错误:%s格式符要求传入单个C风格字符串的首地址,直接传入二维数组名list属于类型不匹配,会触发未定义行为
  • 附加优化点:原代码中scanf("%s", &list[i]);的list[i]本身就是字符数组首地址,不需要额外加取地址符&

修复后代码

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

int main(){
    int limit;
    int i;
    printf("请输入你要录入的条目数量:\n");
    scanf("%d", &limit);
    // 限制最大录入数量避免数组越界
    if(limit > 100) limit = 100;
    char list[100][100];
    for(int i=0; i<limit; i++){
        printf("输入第%d条任务:\n", i+1);
        scanf("%s", list[i]);
    }
    FILE *store;
    store = fopen("data.txt", "w");
    // 遍历数组写入所有条目,每条单独占一行
    for(int i=0; i<limit; i++){
        fprintf(store, "%s\n",list[i]);
    }
    fclose(store);
    return 0;
}

修复说明

  • 新增数组越界校验,避免输入的limit超过二维数组的第一维长度触发内存越界
  • 新增写入循环遍历所有已录入的字符串,依次写入文件
  • 修正fprintf入参,每次传入单个字符串的首地址list[i],匹配%s格式符要求
  • 写入时添加\n换行符,保证文件中每条内容单独占一行,可读性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 15:36:03