c语言中关于字符串的输入与输出问题
代码如图所示,运行结果在右边输入后无法进行输出
忽略屏幕有点脏 scanf_s有好几个参数呢,不能省略 scanf_s改为scanf应该就可以了 ANSI C中没有scanf_s(),只有scanf(),scanf()在读取时不检查边界,所以可能会造成内存访问越界,例如分配了5字节的空间但是读入了10字节
char buf={'\0'};
scanf("%s", buf);如果输入1234567890,后面的部分会被写到别的空间上去。以上代码如果用scanf_s,第二行应改为scanf_s("%s",buf,5),表示最多读取5-1个字符,因为buf要放'\0'
scanf_s最后一个参数是缓冲区的大小,表示最多读取n-1个字符.
你改成scanf("s",a);
试试 wp231957 发表于 2021-5-31 12:38
scanf_s有好几个参数呢,不能省略
话说为什么我学的时候得scanf里&a。直接a没关系吗 kogawananari 发表于 2021-5-31 14:04
话说为什么我学的时候得scanf里&a。直接a没关系吗
后面跟地址啊,数组名不就是地址 肖-肖 发表于 2021-5-31 12:52
scanf_s改为scanf应该就可以了
Visual Studio版本没法使用scanf CClook 发表于 2021-5-31 14:24
Visual Studio版本没法使用scanf
可以的 各位知道问题所在了
char c,s;
scanf_s("%c %s ,&c, 1,s,80); //字符c输入1个,c后面跟1,s字符数组80个,所以s后面加80 CClook 发表于 2021-5-31 14:31
各位知道问题所在了
char c,s;
scanf_s("%c %s ,&c, 1,s,80); //字符c输入1个,c后面跟1, ...
{:5_102:} 能给个最佳嘛
页:
[1]