百度题库给的解释是:指针s未赋初值,所以指向一个不确定的地址,因而不能用scanf输入数据到这一指针所指向的地址。 这里有一个解决办法,就是先用malloc分配内存,之后用free释放掉,具体如下。 1 2 3 4 5 6 7 8 9 10 11 #include<stdio.h> #include<string.h> #include<stdlib.h> intmain(int
char p;scanf("%s",p);//p是指针,如果要存放字符的话,需要先分配空间给它...修改如下:include include int main(void){ char p;p=(char )malloc(sizeof(char));scanf("%s",p);// o:abc ,x:abcd ???printf("\n s",p);free(p);//记得 释放内存 ,(*^__^*)嘻嘻……return...
charinput;printf("请输入一个字符:");scanf("%c", &input); // 读取用户输入的字符printf("您输入的字符是:%c\n", input); // 输出用户输入的字符 输入多个字符时,只读取第一个字符。如下所示呀。读取多个字符的程序如下所示。要读取多个字符的输入,你可以使用循环来逐个读取字符,并存储到字符数组...
1 如果使用scanf进行格式化输入,用逗号隔开不适用于先输入字符串后输入数字的情况,仅适用于数字的间隔,或者先输入数字后输入字符串。下面是先输入数字后输入字符串的例子:include <stdio.h>int main(){char s[100];int v;scanf("%d,%s",&v, s);//先输入整型变量v,再输入字符串,可以使用逗...
1、scanf(%c) 首先要说的是 scanf,它是格式输入函数,标准格式如下: 代码语言:javascript 代码运行次数:0 运行 AI代码解释 int scanf(const char * restrict format,...); 从标准输入流(stdin) 中按照说明的格式读入多个字符,并存入 ==以输入参数的值为地址的变量== 中,所以必须得有 &,除了把字符串读入字...
自己想到的理解方法:char *s;定义了一个指针变量s,但是指向未知,scanf("%s", s);将缓冲区字符串...
不行,a没有初始化,也没有分配足够的空间,scanf会把a指针所指内存开始的一段空间都修改,可能那段内存是不允许读写的,造成程序错误或崩溃。改成:char a[100];scanf("%s",a);或者 char *a;a = (char*)malloc(100);scanf("%s",a);就可以往a中写入不超过100个字符了。不...
scanf()函数是格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。其调用格式通常为: scanf("<格式化字符串>",<地址表>);常用的三种格式: %d格式输入,默认分隔符是所有的空格、回车、制表(即它不会读取这些,会直接跳过); %c格式输入,则按ASCII字符考虑,无分隔符。可能会受到之前输入的影响。 %s 是 ...
字符串是不能存入char变量的,只能是用一个char*的指针变量指向这个字符串地址。另一方面,char类型的数组也可以理解为一个char*指向的内存块,所以通常用来定义一个指定长度的字符串。而Scanf函数有一个格式化参数%s,可以用于从控制台读入字符串。char str[50];scanf("%s",str);2. char a = 'a'...
而对于char型,char ch;scanf(“%c”,ch);可以是可以,但是不能像int等一样随心所欲地加空格和回车,明明说好的scanf自带无视回车和空格。比如下一段代码 intmain() {inta, b, c, d; charx,y, z,s1[10],s2[10],s3[10]; scanf("%d%d%d", &a, &b, &c, &d); scanf...