Linux下编写一个C语言程序从终端输入字符串到文件。要求:每秒钟最多输入10个字符;没有字符输入的时候可以累积字符数量,积累的数量最多不能超过50个
时间: 2024-10-12 10:15:22 浏览: 21
C语言实现输入一个字符串后打印出该字符串中字符的所有排列
在Linux环境下,你可以通过C语言编写一个简单的控制台应用程序,使用标准输入(stdin)接收用户输入,并将输入的内容写入指定的文件,同时限制每秒输入不超过10个字符以及累积的最大字符数为50。以下是一个基本的示例代码:
```c
#include <stdio.h>
#include <unistd.h> // 包含usleep()函数用于暂停进程
#include <string.h>
#define MAX_CHAR 50
void write_to_file(char *filename, char *buffer) {
FILE *fp = fopen(filename, "a"); // 打开文件进行追加模式
if (fp == NULL) {
perror("Error opening file");
return;
}
fprintf(fp, "%s", buffer);
fclose(fp); // 关闭文件句柄
}
int main() {
char input[11]; // 假设每行最大输入10个字符加上换行符
char output[MAX_CHAR];
int count = 0;
while (1) {
// 每次读取一字符,如果输入结束则break
int c = getchar();
if (c == EOF || c == '\n') {
break;
}
// 累积输入,限制每秒不超过10个字符
if (count >= 10) {
usleep(1000000); // 暂停1秒,等待用户输入更多字符
continue; // 跳过本次循环,继续下一轮
}
// 如果达到最大累积字符数,则清空并开始新的累积
if (count == MAX_CHAR) {
memset(output, 0, MAX_CHAR);
}
output[count++] = c;
output[count] = '\0'; // 结束当前字符
// 将缓冲区内容写入文件
write_to_file("input.txt", output);
// 清理当前输入字符
ungetc(c, stdin); // 退回已读字符
}
printf("Input finished.\n");
return 0;
}
```
阅读全文