在在要当程序员 发表于 2021-6-25 19:01:42

关于getchar内为何printf 后不用scanf 就能读取你的输入

如下代码:
#include <stdio.h>

int main()
{
      int count = 0;

      printf("请随意一个英文句子:");

      while (getchar() != '\n')
      {
                count = count + 1;
      }

      printf("你总共输入了%d个字符!\n", count);

      return 0;
}

求问大家
1.为什么printf 后不像之前的语句需要输入Scanf才能读取用户的输入 而是直接可以计算,是getchar的特例吗
2.我自己本来想加一句scanf("%s",&frase);但后面发现一开始无法定义字符串frase,定义的话只能用char定义字符,所以迷茫了,请问有可以定义字符串的函数吗

x-zz 发表于 2021-6-25 20:05:08

{:10_249:}

HongYuMarsMan 发表于 2021-6-25 20:53:49

1. char 他的内存分布为 一个字节
2. %ch 是一个字符 如果是单个字符串就需要 用scanf("%ch",&tmp)
3.%s 代表是一个字符串,字符串的含义就是 字符的数组 所以你可以用 char loopscanf("%s",loop)

万千只cnm 发表于 2021-6-25 21:26:20

c语言没有特意的字符串类型
你可以定义一个数组来储存字符串
char array;
然后 scanf("%s",array);
不用&取地址因为数组名本来就 代表第一个字符的地址

还有就是字符串常量char *p="..." ;只不过不能改 相当于 const char *p;

while (getchar() != '\n')
      {
                count = count + 1;
      }
getchar一次读取一个字符,你在循环内,当然可以循环读取啦   一次循环count就加一
页: [1]
查看完整版本: 关于getchar内为何printf 后不用scanf 就能读取你的输入