您好,登錄后才能下訂單哦!
這篇“C語(yǔ)言中%*s的*有什么作用”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“C語(yǔ)言中%*s的*有什么作用”文章吧。
取決于在 scanf
中使用還是在 printf
中使用。
在 scanf
中使用,則添加了*
的部分會(huì)被忽略,不會(huì)被參數(shù)獲取。例如:
int a,b;char b[10];
scanf("%d%*s",&a,b);
輸入為:12 abc
那么12
將會(huì)讀取到變量 a
中,但是后面的 abc
將在讀取之后拋棄,不賦予任何變量(例如這里的字符數(shù)組b
)
在 printf
中使用,表示用后面的形參替代的位置,實(shí)現(xiàn)動(dòng)態(tài)格式輸出。例如:
printf("%s", 10, s);
/意思是輸出字符串 s,但至少占10個(gè)位置,不足的在字符串s左邊補(bǔ)空格,這里等同于 printf("%10s", s);*/
在舉個(gè)例子,假如要打印 linux 根文件系統(tǒng)下的 /proc/x/status
中的第一行 “Name: login
”,如下
[root@sz /proc/898]#cat status
Name: login
State: S (sleeping)
Tgid: 898
Pid: 898
PPid: 519
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 32
Groups:
VmPeak: 1232 kB
VmSize: 1232 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 312 kB
VmRSS: 312 kB
VmData: 64 kB
VmStk: 136 kB
VmExe: 708 kB
VmLib: 312 kB
VmPTE: 8 kB
VmSwap: 0 kB
Threads: 1
SigQ: 0/469
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 0000000000002000
CapInh: 0000000000000000
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
Cpus_allowed: 1
Cpus_allowed_list: 0
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 1
nonvoluntary_ctxt_switches: 2
為了只獲取 “Name: login
”中的 login
,可以采用如下
//描述: 線程是否存在
//返回: 成功表示存在,返回true,反之為false。
bool IsThreadExist(char *task_name)
{
DIR *dir;
struct dirent *ptr;
FILE *fp;
char filepath[50];
char cur_task_name[50];
char buf[BUF_SIZE];
bool fRet = false;
dir = opendir("/proc");
if (NULL != dir)
{
while ((ptr = readdir(dir)) != NULL)
{
if ((strcmp(ptr->d_name, ".") == 0) || (strcmp(ptr->d_name, "..") == 0))
continue;
if (DT_DIR != ptr->d_type)
continue;
sprintf(filepath, "/proc/%s/status", ptr->d_name);
fp = fopen(filepath, "r");
if (NULL != fp)
{
if( fgets(buf, BUF_SIZE-1, fp)== NULL ){
fclose(fp);
continue;
}
sscanf(buf, "%*s %s", cur_task_name);
if (strcmp(task_name, cur_task_name) == 0){
fRet = true;
}
fclose(fp);
}
}
closedir(dir);
}
return fRet;
}
以上就是關(guān)于“C語(yǔ)言中%*s的*有什么作用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。