我自己独立写的第一个C程序,哈哈

countstars countstars 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
嘿嘿,写了半个小时左右,调试时间5分钟

/**
* 获取用户输入的字符串,打印行号
* skchen @ 2009.08.29 03:03
*/
#include <stdio.h>
#include <stdlib.h>

#define MEM_SIZE 100

void main() {
//行号
int line_num = 1;
//行字符数
int char_num = 1;
//行指针
char *line = NULL;
//用户输入的字符
char c;
//已分配内存大小
int total_mem_size = 0;

while ((c = getchar()) != EOF && c != '\n') {
do {
//看看内存空间是否足够用,要留一位给\0
if (total_mem_size < char_num) {
//分配扩大内存空间
line = realloc(line, total_mem_size + MEM_SIZE);
if (line == NULL) {
printf("动态内存分配错误!程序退出!\n");
exit(EXIT_FAILURE);
}
//如果分配成功,内存总分配大小加上去
total_mem_size += MEM_SIZE;
}
//把字符给数组
line[char_num - 1] = c;
char_num++;
//继续获取字符
c = getchar();
//判断是否回车,如果不是则未结束,继续循环
} while (c != '\n');
//添加字符串结束符
line[char_num - 1] = '\0';
//打印结果
printf("line: %d, length: %d, size: %d, string: %s\n", line_num, char_num, total_mem_size, line);
//释放内存
free(line);
//指针重新置为NULL
line = NULL;
//内存大小置为0
total_mem_size = 0;
//字符长度初始化为1
char_num = 1;
//行号+1
line_num++;
}
exit(EXIT_SUCCESS);
}
...全文
评论 84
收藏 已收藏
分享
返回顶部
countstars
C语言 70,040 成员 243,237 内容