【问题标题】:Dynamic String input in CC中的动态字符串输入
【发布时间】:2013-11-17 01:16:29
【问题描述】:

我正在为我的计算机 I 课程编写一个程序,在该程序中我必须从屏幕输入单词(标准输入)并将单词转换为 Pig Latin。

我可以轻松地将单个单词转换为 Pig Latin;我的问题是输入。用户将在任意数量的行上输入任意数量的单词,然后在输入完成后在新行上输入五个句点(“.....”)。教授给出的例子是:

快速的棕色狐狸
跳过懒狗
因为它不会移动
.....

在不知道用户将输入多少字(或行)的情况下,如何将每行输入分成单独的字?

【问题讨论】:

  • 您要查找的函数中包含“scan”或“get”字样

标签: c string dynamic input


【解决方案1】:

这样的事情应该可以工作:

#include <stdio.h>
#include <string.h>

int main(int argc,char** argv) {
  char input[64];
  char* token = 0;

  // get a line from input
  while(fgets(input, 64, stdin)) {
     // check for terminating characters
     if(strncmp(input, ".....", 5) == 0) break;
     // tokenize the input
     token = strtok(input, " ");
     while(token) {
       // token contains each word
       token = strtok(NULL, " ");
     }
  }
  return 0;
}

【讨论】:

  • 不要使用gets()。它是如此卑鄙和邪恶,已正式从该语言中弃用,并且不会成为下一个标准版本的一部分。改用fgets(),它提供了缓冲区溢出的自我引导保护。
猜你喜欢
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 2016-05-23
  • 2021-07-03
  • 2018-03-25
  • 2016-11-07
相关资源
最近更新 更多