无法进行正确的采集循环 - C

时间:2017-01-02 21:21:38

标签: c loops scanf gets

我想要做的是创建一个收集字符串的循环(在这种情况下是一个名称),然后通过角色的请求询问用户是否要继续插入更多。

#include <stdio.h>
#include <string.h>
void main(){
    char c, str[5][20];
    int i=0;
    do {
        printf("What's your name?\n");
        gets(str[i]);
        i++;
        printf("Do you want to insert more?\n");
        scanf("%c\n",&c);
    } while (c=='y');
}

我读过的字符串数量及其长度是任意的而不是我遇到的问题,只是想知道是否有正确的方式&#34;使用这种收购或者我应该放弃它。

2 个答案:

答案 0 :(得分:-3)

转动时变得更容易: 而不是要求更多,等待空输入

elixir(function(mix) {
    mix.copy(
        '../../bower_components/font-awesome/fonts',
        'public/build/fonts'
    );
});

答案 1 :(得分:-3)

你可以这样做。

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

int main() {
    char c[3], str[5][20];
    int i = 0;
    do {
        printf("What's your name?\n");
        if (fgets(str[i], sizeof str[i], stdin)) {
            // input has worked, do something with data
            i++;
        }
        printf("Do you want to insert more?\n");
        if (fgets(c, 3, stdin)) {
            // input has worked, do something with data
        }
    } while (c[0] == 'y');
}

测试

What's your name?
Mallory
Do you want to insert more?
y
What's your name?
Carol
Do you want to insert more?
no

Process finished with exit code 0