use*_*474 19 c string printf input
我有以下代码:
char *s1, *s2;
char str[10];
printf("Type a string: ");
scanf("%s", str);
s1 = &str[0];
s2 = &str[2];
printf("%s\n", s1);
printf("%s\n", s2);
Run Code Online (Sandbox Code Playgroud)
当我运行代码时,输入输入"A 1"如下:
Type a string: A 1
Run Code Online (Sandbox Code Playgroud)
我得到了以下结果:
A
?<?
Run Code Online (Sandbox Code Playgroud)
我正在尝试将第一个字符作为字符串读取,将第三个字符作为整数读取,然后在屏幕上打印出来.第一个角色总是有效,但屏幕只会在那之后显示随机的东西....我该如何解决?
谢谢
sbl*_*lom 30
你走在正确的轨道上.这是一个更正版本:
char str[10];
int n;
printf("type a string: ");
scanf("%s %d", str, &n);
printf("%s\n", str);
printf("%d\n", n);
Run Code Online (Sandbox Code Playgroud)
让我们来谈谈这些变化:
n
)来存储你的号码scanf
首先读一个字符串,然后读一个数字(%d
意思是数字,正如你已经知道的那样printf
这就是它的全部内容.您的代码仍然有点危险,因为任何超过9个字符的用户输入都会溢出str
并开始践踏您的堆栈.