繁体   English   中英

以逗号分隔输入

[英]Get input separated by commas

我需要编写一个程序来询问用户输入(直到他们通过输入exit终止它)。 输入以逗号分隔(例如: value,value,value )。 然后,每个单独的值都需要放入其自己的变量中。

例:

如果用户输入hello,15,bye ,我需要将hello放入第first变量,将15放入second变量,并将bye放入third变量。

这是我到目前为止的内容:

int main(void) {
  char input[100];
  char first[100];
  char second[100];
  char third[100];

  printf("Enter commands: ");

  while(fgets(input, 100, stdin)) {
    if(strncmp("exit", input, 4) == 0) {
      exit(0);
    }

    // missing code
  }
}

如何用逗号分隔输入并将值添加到它们自己的变量中?

使用sscanf()和扫描集:

if (sscanf(input, "%99[^,],%99[^,],%99[^,\n]", first, second, third) != 3)
    ...oops...

出现99的原因是因为字符串定义为100,这可以确保没有溢出,尽管输入行也为100,但是溢出不是问题。

其中两个扫描集是%99[^,] ,看起来像是正则表达式的有限形式。 脱字号表示“否定扫描集”,因此该字符串与除逗号以外的其他任何内容匹配。 最后一个是%99[^,\\n] ,其中不包括换行符和逗号。

您可以通过在转换说明之前添加空格来跳过名称上的前导空白。 尾随空格很难避免。 如果有问题,请在转换成功后将其删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM