0

这是我想要做的逻辑;

  • 在名为ch的变量中使用fgetc()获取输入字符,
  • 检查不是chEOF还是等于'\n'
  • 增加名为counter的int 变量,
  • 然后使用ungetc()将变量ch放入标准输入
  • 重复过程

之后,使用counter分配内存。再次,使用fgetc()获取stdin中的 char并将其存储到数组中。

这个想法只适用于一个字符输入。这是我为两个或多个输入编写的代码;

while ( ((entry = fgetc(stdin)) != EOF) && (entry != '\n'))
    {
        ++counter;
        ungetc(entry, stdin);
        fprintf(stdout, "%c,%d ", entry, counter); // 
    } //;

这是我输入qwert作为输入时控制台的输出;

q,2 q,3 q,4 q,5 q,6 q,7 q,8 q,9 q,10 q,11 q,12 q,13 q,14 q,15 q,16 q,17 q,18 q,19 q,20 q,21 q,22 q,23 q,24 q,25 q,26 q,27 q,28 q,29 q,30 q,31 q,32 q,33 q,34 q,35 q,36 q,37 q,38 q,39 q,40 q,41 q,42 

读取第一个字符后,它会继续读取第一个字符,永远不会得到第二个或其他字符。

操作系统:Windows 10 | MinGW gcc-9.1.0

我究竟做错了什么?甚至可能吗?

4

0 回答 0