2013-03-28 83 views
0

我有一個名爲commands.txt的文本文件,其中包含一些後跟一些參數的命令。例如:如何通過字符串中的數字分隔單詞

STOP 1 2 4 
START 5 2 1 8 
MOVE 
CUT 0 9 

我想讀取該文本文件的每一行,並打印這樣的事情

STOP: 1 2 3 
START: 5 2 1 8 
MOVE: 
CUT: 0 9 

我讀用於fgets每一行,然後我試着用sscanf的,但不起作用。

char line[100] // here I put the line 
char command[20] // here I put the command 
args[10]   // here I put the arguments 



#include<stdio.h> 
    int main() 
    { 
    FILE *f; 
char line[100]; 
char command[20]; 
int args[10]; 

f=fopen("commands.txt" ,"rt"); 
while(!feof(f)) 
{ 
fgets(line , 40 , f); 
//here i need help 
} 
fclose(f); 
return 0; 
} 

你能幫幫我嗎?

+1

分裂()'! – pmg 2013-03-28 11:10:24

+0

不需要'feof()',只是循環直到'fgets()'返回NULL。 – unwind 2013-03-28 11:11:48

+0

sscanf(s,「%s%d%d%d%d%d」,command,&args [0],&args [1],&args [2],&args [3],&args [4]);問題是每個命令的參數數量不一樣 – Alex 2013-03-28 11:16:58

回答

0

看看this,並使用空白字符作爲分隔符。

+0

Strtok和atoi是答案,非常感謝你 – Alex 2013-03-28 17:59:35

+0

不客氣 – hazzelnuttie 2013-03-29 04:27:17

0

您可以使用fscanf()從您的文件中讀取。

如果我們假設在您的文件中除了換行符之外的每行末尾都沒有空格(空格,製表符,..),那麼您可以使用下面的代碼。它更簡單,然後使用fgets。如果您有`的sscanf()`發佈您的代碼包含`sscanf的麻煩,每次

int main() 

{ 
    FILE *f; 
    char command[20]; 
    char args[10]; 
    f=fopen("commands.txt" ,"rt"); 
    while(fscanf(f, "%s %[^\n]", command, args)>0) 
    { 
     printf("%s: %s\n", command, args); 
    } 
} 
+0

非常感謝! – Alex 2013-03-28 11:24:15

+0

不客氣 – MOHAMED 2013-03-28 11:25:15

相關問題