簡體   English   中英

fscanf返回(null)

[英]fscanf returns (null)

運行以下代碼時:

FILE *input;
char *name=NULL,*stat=NULL;
int i=0,j=0;
input=fopen("/proc/1/stat","r");
fscanf(input,"%d",&i);
fscanf(input,"%s",name);
fscanf(input,"%s",stat);
fscanf(input,"%d",&j);
printf("pid : %d name: %s status: %s ppid: %d",i,name,stat,j);

我得到輸出:

 pid : 1 name: (null) status: (null) ppid: 0 

/ proc / 1 / stat的內容是

1(init)S 0

你能告訴我這里我做錯了什么嗎?

您需要使用malloc或者初始化name和stat

char name[LENGTH];

如果你只是寫

char *name;

它不會起作用

namestat必須不是NULL ...你必須初始化它們 - 通過直接將它們定義為char name [LENGTH]這樣的數組...

我運行你的代碼,它的工作原理。

FILE *input;
input = fopen("stat","r");

int i, j;
char name[100], stat[100];

fscanf(input,"%d", &i);
fscanf(input," %s", name);
fscanf(input," %s", stat);
fscanf(input," %d", &j);
printf("pid : %d name: %s status: %s ppid: %d", i, name, stat, j);

如果您遇到某些緩沖區問題,可以嘗試以下代碼...

int i, j;
char name[100], stat[100], temp[200];

fscanf(input, " %[^\n]s", temp);
sscanf(temp, "%d %s %s %d", &i, name, stat, &j);
printf("pid : %d name: %s status: %s ppid: %d\n", i, name, stat, j);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM