【问题标题】:How to fix the loop?如何修复循环?
【发布时间】:2013-10-06 00:54:26
【问题描述】:

我需要一个程序来使用fgetc 从文件中获取输入。第一个条件是找到换行符'\n',然后复制所有字符。之后,如果遇到逗号',',程序需要停止复制。

我的代码可以编译,但是当我运行它时,什么也没有发生;光标只是无限闪烁。

do  {
        if (copy != '\n')
            {
            copy = fgetc(mp);
            }
        else
            {
            for (i=0; copy != ','; i++) //i is a counter                {
                player_name[i] = copy;
                copy = fgetc(mp);
                }
            }
        }
    while (copy != EOF);

printf("%c", player_name);

帮助?

【问题讨论】:

  • 这段代码没有输出,这就是为什么你什么也看不到的原因。添加一些printf 语句。
  • 将 printf 中的 %c 更改为 %s
  • 对不起。我已经编辑过了。
  • 另外,读完所有字符后,在 player_name 中添加 0 表示字符串结束。所以在for循环之后,我会输入player_name[i] = 0。现在循环的设置方式是,在读取第一个player_name 之后,它会看到copy != EOF 并会寻找另一个换行符,之后它将覆盖第一个player_name。

标签: c loops fgetc


【解决方案1】:

如果您想查看输出,请添加printf

do  {
    if (copy != '\n')
        {
        copy = fgetc(mp);
        }
    else
        {
        for (i=0; copy != ','; i++) //i is a counter                {
            player_name[i] = copy;
            printf("%c",player_name[i]);
            copy = fgetc(mp);
            }

         player_name[i] = '\0'; // impliment this if you want to convert player name into a string to be used later 
        }
    }
while (copy != EOF);
printf("\n");

【讨论】:

    【解决方案2】:

    问题不在于您的结构。运行之后,复制确实等于你想要的。但是您还没有告诉计算机如何处理该变量。你想打印吗?写入另一个文件?

    告诉计算机对副本做某事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-10
      • 2012-01-04
      • 2020-01-05
      • 2020-09-15
      • 1970-01-01
      相关资源
      最近更新 更多