c - 从 STDIN 逐行读取并将其写入输出文件
问题描述
对于我的作业的一部分,我需要逐行从用户那里获取输入并将其打印到输出文件中,但我总是得到空文件。
我让它在不同的场景下工作,当它从文件中读取并将结果写入文件时。但在这种情况下,我无法弄清楚我做错了什么。
while(-1 != (nchr = getline(&buffer, &buffer_size, stdin)))
{
if(buffer == NULL){
return EXIT_FAILURE;
}
//last line in file without \n ??
buffer[--nchr] = '\0';
char tmp[nchr];
strcpy(tmp, buffer);
if(optionI){
convertToLow(buffer);
}
if(optionS){
deblank(buffer);
}
if(optionO){
// !!!!!!!!!!!!!!!!!!!
// won't print in file
// !!!!!!!!!!!!!!!!!!!
if (is_ok(buffer)) {
fprintf(outfile,"%s is ok\n", tmp);
} else {
fprintf(outfile,"%s is not ok\n", tmp);
}
} else{
if (is_ok(buffer)) {
printf("%s is ok\n", tmp);
} else {
printf("%s is not ok\n", tmp);
}
}
}
free(buffer);
}
fclose(outfile);
fflush(stdout);
fflush(stdin);
解决方案
推荐阅读
- python - 熊猫连接/更新 3 dfs
- matlab - Scilab中不一致的行/列尺寸错误
- python - 当要集成的功能也是一个整体时,scipy.integrate.quad 失败(有时)
- excel - 显示弹出消息
- usb - 我想使用 udev 规则阻止除键盘和鼠标之外的所有 USB 设备?
- arrays - SQL 选择查询的循环结果
- javascript - 如果互联网出现故障,想要离线存储表单数据并在互联网活跃时提交
- laravel - Laravel 5.7 中的电子邮件验证语言文件
- python - 用 seaborn 绘制 - 我的实体数量多年来的时间演变
- bootstrap-datetimepicker - 在 boostrap-datetimepicker 的选择器上设置分钟步长