scanf寫入字串給指標

2021-10-22 21:11:38 字數 686 閱讀 8752

#include

"stdio.h"

main()

a[3];

int i ;

for(i=

0;i<

3;i++

)scanf

("%d%s"

,&a[i]

.nu,a[i]

.name)

;for

(i=0

;i<

3;i++

)printf

("%3d% s\n"

,a[i]

.nu,a[i]

.name)

;}

c語言是比較低階的語言,沒有字串概念,只有字元陣列,不能自動分配空間,要存放資料,必須預先定義儲存空間的大小!

改為:char name[100]; 一定要常量

scanf("%d%s",&a[i].nu,a[i].name); 就沒問題了!

估計你曾經看過這種定義法:char *name=「abcd」;這種也是字元陣列初始化固定的空間4個,所以你要記住,初始化一定要預定存放的空間大小!

還有你想達到高階語言的效果,你也可以用

a[i].name = (char *)malloc(100); /這裡也要常量/

scanf("%d%s",&a[i].nu,a[i].name); 就沒問題了!

指標 ,將字串a複製給字串b

將字串a複製給字串b 如下 將字串a複製給b include intmain p2 0 記得給p2加上 0 for b i 0 i 做完之後 又想到了幾個問題 1 p2被覆蓋掉了嗎?那在此之前它是怎麼傳給陣列b的?2,能不能用指標變數輸出?改改動動試試後 發現這樣也可以 include intmai...

字串 scanf函式輸入字串詳解

除了在定義字元陣列時初始化外,還可以通過scanf從鍵盤輸入字串。下面寫乙個程式 用 scanf 給字元陣列賦值不同於對數值型陣列賦值。前面講過,給數值型陣列賦值時只能用 for 迴圈乙個乙個地賦值,不能整體賦值。而給字元陣列賦值時可以直接賦值,不需要使用迴圈。此外從鍵盤輸入後,系統會自動在最後新增...

C 寫入字串

c 中幾個輸入函式的用法和區別 cin cin.get cin.getline getline gets getchar 1 cin 用法1 最基本,也是最常用的用法,輸入乙個數字 用法2 接受乙個字串,遇 空格 tab 回車 都結束 include using namespace std main...