我想从键盘输入一个字符串或数字,然后显示它。我该怎么做? 这就是我所拥有的,给了我各种各样的错误,但是没关系我的代码,这只是一个例子。我想知道正确的做法是什么。
请提供一些代码作为示例,也许我可以进一步记录一些链接。
#include "stdafx.h"
#include <windows.h>
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{
LPSTR test;
scanf("%s", &test);
printf("%s", &test);
//_getch();
return 0;
}
答案 0 :(得分:1)
scanf
读入预分配的缓冲区。除非你指定一个字段宽度,例如缓冲区溢出是不安全的。 "%50s"
。
同样,printf( "%s", str )
获取指向str
字符串的第一个字符的指针。
您正在向指针传递指针,因此我假设您希望这些函数为您进行内存管理。 scanf
永远不会致电malloc
。
char testbuf[ 51 ]; // allocate space for 50 characters + termination
LPSTR test = testbuf;
scanf("%50s", test); // read at most 50 characters
printf("%s", test);
//_getch();
return 0;
答案 1 :(得分:1)
由于您尚未为test
分配任何内存,因此您有以下几种选择:
test
声明更改为char
数组:char test[64];
test
分配了一些内存
LPSTR test = malloc(64 * sizeof(*test));
另外,这条线错了:
scanf("%s", &test);
应该只是
scanf("%s", test);
使用scanf()
时不需要字符数组的地址,任何体面的编译器都应该在那里给你一个警告。