當使用 %s 於 printf 和 scanf 時, 對應的argument 必須是 char * , 如下列例子:
char *str_constant = "I point to a string literal";
char str_buf[] = "I am an array of char initialized with a string literal";
printf("string literal = %s\n", "I am a string literal");
printf("str_constant = %s\n", str_constant);
printf("str_buf = %s\n", str_buf);
scanf("%55s", str_buf);
值得注意的是, 看以下小程序,
#define max 5
----------------------
#define max 5
----------------------
char *name[max];
int i;
for (i = 0; i < max; i++){
name[i] = malloc(3);
scanf("%3s", name[i]);
printf("%s\n", name[i]);
free(name[i]);
}
// 使用scanf前必須用使用 malloc 為每個char * pointer 動態分配位置記存字符
// %3s , 即指只讀取讀入字串的前3個字符
int i;
for (i = 0; i < max; i++){
name[i] = malloc(3);
scanf("%3s", name[i]);
printf("%s\n", name[i]);
free(name[i]);
}
// 使用scanf前必須用使用 malloc 為每個char * pointer 動態分配位置記存字符
// %3s , 即指只讀取讀入字串的前3個字符
沒有留言:
張貼留言