kyl*_*yle 0 c string pointers scanf
以下是好的代码吗?我不应该在某处使用malloc吗?我能够编译它并且它有效,但我觉得它不应该有.
#include <stdio.h>
int main (void) {
char *name;
printf("Whats your name? ");
scanf("%s", &name);
printf("\nyour name is %s", &name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我想修改名字会怎么样?我该怎么做呢?
编辑:我真的只是在寻找使用指针执行此操作的最有效和最正确的方法.我假设malloc是必要的.
name是一个指针,并&name返回变量的地址name,因此scanf将您输入的名称放入指针本身.
例如,如果输入ABC则指针将为0x00434241(如果CPU为little-endian)或0x41434200(如果CPU为big-endian),其中0x41是'A'的字符代码,0x42是字符代码'B'等
您应该分配可以存储输入名称的内存,然后将指针传递给它scanf.
这是在堆栈上分配的示例:
#include <stdio.h>
#define MAX_NAME_LENGTH 256
int main (void) {
char name[MAX_NAME_LENGTH];
printf("Whats your name? ");
scanf("%s", name);
printf("\nyour name is %s", name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
46473 次 |
| 最近记录: |