轻松的编程学习
首页
题库
学习路径
在线商城
能力地图
下载应用
登录 / 注册
菜单
⚠️ 边读边存进堆里
👁️ 0 人浏览
💬 0 人评论
❤️ 添加收藏
(本条路线统一用
gcc -std=c11 -O0 -Wall
编译)循环体里把每行的名字存一份下来。
提交你的答案
请登录后提交答案。
去登录
← 自己写一个「在堆上存一份副本」
🔴 两层的内存,还的时候从里往外 →
更多题目
改成"你好,有词"
输出"100 分"
把年龄改成 20
输出学习天数 30
修复:给文字加引号
修复:补上右括号
代码编辑器
语言:
python3
c11
cpp17
Ctrl
+
Enter
运行
👩🏫 AI
▶ 运行代码
重置代码
打印代码
#include <stdio.h> #include <stdlib.h> #include <string.h> static int got = 0, gave = 0; int main(void) { FILE *f = tmpfile(); if (f == NULL) { printf("建不出\n"); return 1; } const char *rows[4] = {"apple 3", "pear 5", "plum 2", "fig 4"}; for (int i = 0; i < 4; i++) fprintf(f, "%s\n", rows[i]); rewind(f); char **kept = malloc(4 * sizeof(char *)); got++; int n = 0; char name[32]; int qty, total = 0; while (n < 4 && fscanf(f, "%31s %d", name, &qty) == 2) { /* TODO: 把 name 存一份进 kept[n](要内存、记账、拷贝), 数量加进 total,n 往前走一格 */ break; } fclose(f); int longest = 0; for (int i = 0; i < n; i++) if ((int)strlen(kept[i]) > longest) longest = (int)strlen(kept[i]); for (int i = 0; i < n; i++) { free(kept[i]); gave++; } free(kept); gave++; printf("%d/%d/%d/%d\n", n, total, longest, got - gave); return 0; }
本次输入:
输出:
👩🏫
AI
请登录后使用 AI 老师
×
登录后可获得解题思路、提示与错误分析。
去登录
关闭
🎉
恭喜你,回答正确!
系统判定:正确
我知道了
💬 题目评论
提交
全部评论
全部评论