2

我需要制作一个程序来询问用户输入(直到他们通过键入终止它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
  }
}

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

4

1 回答 1

4

使用sscanf()和扫描集:

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

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

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

您可以通过在转换规范前添加空格来跳过名称中的前导空格。尾随空格不能轻易避免;如果它们有问题,请在转换成功后将其删除。

于 2013-09-23T01:24:31.197 回答