#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...