3 回答

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
scanf("%[^\n]%*c",str)
表示讀入一行字符串。
^表示"非",[^\n]表示讀入換行字符就結(jié)束讀入。
*表示該輸入項(xiàng)讀入后不賦予任何變量,即scanf("%*[^\n]%*c")表示跳過(guò)一行字符串。
^可以看作是運(yùn)算符

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個(gè)贊
scanf("%*c%*[^\n]");這條語(yǔ)句中%*c表示, 讀入一個(gè)字符,但是這個(gè)字符不保存到變量里,所以后面不需要有對(duì)應(yīng)的char型的參數(shù)。%*[^\n]表示讀入一個(gè)字符串,字符串里的字符只能是由[]里指定的字符,并且這個(gè)字符串也不保存。假如是%*[abcd], 只能輸入abcd所組成的字符串,如aabbddcc,如果遇到其他字符,scanf函數(shù)就會(huì)返回。這里是%*[^\n], ^表示“非”的意思, \n是換行, %*[^\n]表示讀入所有不是換行的字符。所以 scanf("%*c%*[^\n]");表示,讀入一個(gè)字符,再讀入一串不是換行的字符,這些都不保存,然后返回。其實(shí)就是,跳過(guò)一行的意思。你這個(gè)程序的輸入,可能是這樣的:21 2 abcd3 4 xxxxxxxxxscanf("%d",&k);讀入了k,使k成了2,scanf("%d\n%d",&n,&win);讀入了n和win,它們分別是1,2,這時(shí)候,后面的abcd用不著了,使用scanf("%*c%*[^\n]");跳過(guò)去。然后繼續(xù)讀入scanf("%d\n%d",&n,&win),使n=3,win=4,這時(shí),再使用scanf("%*c%*[^\n]");跳過(guò)后面的xxxxxxxxx

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
int k,i,n,win;意思是定義整形變量scanf("%d",$k);接收屏幕輸入的數(shù)字,并保存到k變量中for(i=1;i<=k;i++)循環(huán)從i=1開(kāi)始,直到i<=k的值為止,每次I自增1scanf("%d\n%d",&n,&win)從屏幕中接受兩個(gè)數(shù)據(jù)并保存到變量n和win中。scanf(“%*C%*[^\n]”)從屏幕中接受字符串if(win==0) printf("wind\n")如果win的值為0則輸出字符串wind否則輸出字符串lolanv
添加回答
舉報(bào)