当 dyn_mat 的参数为常量时,代码运行不会出现任何错误,并且 s1 和 s2 确实存储输入值。
#include<stdio.h>
int main(int argc, char const *argv[])
{
char *s1, *s2;
int n1=7, n2=8;
printf("Enter, %d \n", n1);
scanf("%s", s1);
scanf("%s", s2);
int dyn_mat[155][347];
return 0;
}
但当参数作为变量时,例如 n1 和 n2,scanf 读取 s1 会出现分段错误。
代码简单地有未定义的行为, since s1
and s2
不是有效的指针。scanf
需要一个指向足以容纳读取数据的字符数组的指针,而您没有提供此类指针。
通常的方法是这样的:
char s1[1000];
char s2[1000];
scanf("%s", s1);
scanf("%s", s2);
(尽管您应该使用更安全的版本来指定可用缓冲区大小,而不是希望输入足够短;例如,scanf("%999s", s1);
.)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)