c - 在 SCO Unix OS 中获取用户输入时出现问题

标签 c unix cc sco-unix

我在尝试通过代码获取用户输入时遇到一个奇怪的问题。我很确定问题不在于代码,而是与操作系统有关,例如标准输入流(stdin)或类似的东西,但因为我没有另一台具有类似操作系统设置的机器(如现在几乎不可能找到 SCO 机器),我希望有一些编程解决方法来解决这个问题。我的程序从用户读取以 '\n' 结尾的字母数字字符流。

但无论我如何尝试通过不同的方式实现这一点,它只接受最初的 256 个字符。最初我怀疑问题出在 fgets 函数上,但是当我尝试使用 fgets 从文件中读取相同的值时,它按预期工作。

方法一:

main()
{
  char szInLine[999]; 
  memset(szInLine, 0, sizeof(szInLine));

  fprintf(stdout, "\nPlease enter the encrypted value:\n");

  if (fgets(szInLine, 997, stdin) == NULL)
   return(1);

  fprintf(stdout, "Encrypted data string contains %i characters: %s\n", 
  strlen(szInLine), szInLine);
}

方法 2:

while(ch = getc(stdin)) != EOF)
{

  if((*szInLine++ = ch) == '\n')
  {
    break; 
  } 
}
*szInLine = '\0';

fprintf(stdout, "Encrypted data string contains %i characters: %s\n", strlen(szInLine), szInLine);

两种情况的输出:“加密数据字符串包含 256 个字符:abcde.....

我已经尝试过但没有成功的其他方法包括更改保存值的缓冲区的数据类型(从字符串到unsigned long)、动态为缓冲区分配内存、设置stdin 作为无缓冲等

操作系统环境: SCO Unix,32位 编译器: 抄送

最佳答案

请参阅 SCO 网站上的 ioctl() 和 stty() 手册页。您应该能够通过测试终端与重定向来检索设置中的差异。

关于c - 在 SCO Unix OS 中获取用户输入时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48009023/

相关文章:

ffmpeg - 共享 :ERROR: closure compiler failed (rc: 1)

c - 将整数文本文件解析为数组

c - C中的接口(interface)交互

c - 为什么全局变量总是初始化为 '0' ,而不是局部变量?

在信号处理程序中调用标准库函数

c - 收到错误 "undefined reference to"。你能解释一下这是什么意思以及我在哪里犯了错误吗?

linux - Unix (ksh) 脚本,用于读取文件、解析和仅输出某些列

internet-explorer - Vimeo 字幕在 IE 中不工作

c - 使用 scanf 存储字符串时出现问题

从 RGB 转换为灰度时 cvCvtColor 崩溃