c - scanf "%c"不读取 C 中的空格

标签 c char scanf

我需要读取用户输入的字符(包括空格)并将它们存储在链接列表中。如果我使用 scanf("%c", &charas) 它会运行循环 2 次并且只允许输入 1 次。如果我使用 scanf("%c", &charas) 它不会读取空格。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
struct sarasas {
    char zenklas;
    struct sarasas *kitas;
};
typedef struct sarasas Sarasas;
typedef Sarasas *SarasasPtr;

int tarpas(struct sarasas* sar, int index)
{
    struct sarasas* dabartinis = sar;
    int i;
    for (i=1; i<=index; i++)
    {
        if (dabartinis->zenklas == 32)
            return(i);
        dabartinis=dabartinis->kitas;
    }
}

int main()
{
    int i, n, tarpo_vieta;
    char charas;
    SarasasPtr sar;
    sar=(SarasasPtr) malloc(sizeof(Sarasas));
    SarasasPtr pradzia=sar;
    printf("Iveskite skaiciu n\n");
    scanf("%d", &n);
    printf("Veskite elementus: \n");
    for(i=1;i<=n;i++)
    {
        printf("%d\n", i);
        scanf("%c\n", &charas);
            sar->zenklas=charas;
            sar->kitas=(SarasasPtr) malloc(sizeof(Sarasas));
            sar=sar->kitas;

    }
    sar->kitas=NULL;
    //tarpo_vieta=tarpas(pradzia, n);
    printf("%d\n", tarpo_vieta);
    for (i=1;i<=n;i++)
    {
        printf("%c\n", pradzia->zenklas);
        pradzia=pradzia->kitas;
    }
}

我也不能使用数组。

最佳答案

使用fgets

fgets(comment, sizeof comment, stdin);

或者

使用

scanf("%[^\n]",word);

关于c - scanf "%c"不读取 C 中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22553671/

相关文章:

c - 系统调用 open() 似乎在创建文件时随机设置文件权限

c - 按照 fprintf 语法定义字符串

c - 是否应该使用 C 中的文字初始化具有指定大小的静态声明的字符数组?

c - char 数组是否为 null 终止符分配一个额外的空间?

c++ - 为什么在大括号初始化中允许在参数列表中使用额外的逗号?

c++ - 如何从 mex 函数返回矩阵结构?

C++11数据类型混淆

c - 如何在 while 循环中正确使用 fscanf?

c - 动态字符串输入 - 使用 scanf ("%as")

c - scanf 读取输入太快出现问题?