在for循环中使用scanf只在第一次迭代时提示

a11xaf1n  于 2023-08-03  发布在  其他
关注(0)|答案(1)|浏览(91)

我正在创建一个程序,在这个程序中,对于for循环的每次迭代,都提示我输入input。然而,我只在循环的第一次迭代时得到提示,而不是在任何后续迭代中。
代码如下:

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

void get_letters(char *letters, int number);

int main() {
    char letters[10];
    int number;
    memset(letters, '\0', 10);
    scanf("%d", &number);
    get_letters(letters, number);
    printf("%s\n", letters);
    return 0;
}

void get_letters(char *letters, int number)
{
    for (int i = 0; i < number; i++) {
        printf("bruh\n");
        scanf(" %c", letters[i]);
    }
}

字符串
这是我运行程序时的输出:如图所示,程序在第一次迭代后退出,而不调用后续提示。

的数据

az31mfrm

az31mfrm1#

你正在传递第i个字母给scanf,而你应该传递它的地址

void get_letters(char *letters, int number){
    for (int i = 0; i < number; i++) {
        printf("bruh\n");
        scanf(" %c", &letters[i]);
    }
}

字符串

相关问题