在c中的do-while循环中扫描两个变量

时间:2018-03-31 11:18:41

标签: c do-while

我正在尝试创建一个扫描两个变量的do-while循环,但是当我输入" exit"时,我想让函数循环出去。 这是我的代码:

char var1;
char var2;
do {
    scanf("%s %s", &var1, &var2);
} while ("Some argument that I don't know")

我尝试了(strcmp(&var1,'quit') != 0)这样的事情作为论据,但它不起作用。

2 个答案:

答案 0 :(得分:1)

您的变量类型错误。它必须是 char 数组才能保存文本字符串。

使用strcmp检查“退出”

类似的东西:

char var1[32] = {0};
char var2[32] = {0};
do {
    scanf("%31s %31s", var1, var2);
}while ((strcmp(var1, "exit") != 0) && (strcmp(var2, "exit") != 0));

另一种方法是让程序在第一次输入“退出”时退出,如下所示:

#include <stdio.h>

int main() {
char var1[32] = {0};
char var2[32] = {0};
do {
    scanf("%31s", var1);
    if (strcmp(var1, "exit") == 0) break;
    scanf("%31s", var2);
    if (strcmp(var2, "exit") == 0) break;
    printf("%s %s\n", var1, var2);
}while (1);

return 0;
}

答案 1 :(得分:0)

我认为您的一个问题是您正在尝试将字符串扫描到char变量中:

char var1创建一个新的char变量,一次只能容纳一个字符。

scanf中的

%s扫描字符串 - 字符数组

将变量初始化为:

char * var1;
char * var2;

允许scanf将字符串扫描到它们中。之前的 strcmp 行可能会在此之后起作用 - 如果你想检查这两个变量,你还需要一个额外的条件。