2014-04-10 74 views
-1

這是我在這裏的第一篇文章,所以不真正知道如何在這裏發佈正確格式的東西。我有一個關於如何從文件中讀取一行的問題,並將一些單詞作爲字符串讀取,並將其中一些作爲Int讀取。閱讀一行並將其轉換爲字符串c

int check = sscanf(read, "%s %d", string, &integer); 
    printf("%s, %d", string, integer); 

以上是我所做的一切。輸入是「單詞1」。我得到的是「(null)4196448」。那麼我怎麼才能正確地做到這一點?謝謝

這是我的代碼的一部分。

int i; 
for (i = 1; i <= 3; i++) 
    { 
      char read[MAX_LENGTH_INPUT]; 
      fgets(read, sizeof(read), stdin); 
      int check2 = sscanf(read, "%s %d", word, &number); 
      printf("%s %d\n", word, number); 
    } 

所以for循環是掃描.in文件中的三行。我可以這樣做嗎? 這是輸入的.in文件。

oneword 1 
    twoword 2 
    thirdword 3 

產量爲

(null) 4196448 
    (null) 4196448 
    (null) 4196448 
+0

'這是我在這裏的第一篇文章,所以不真正知道如何在這裏發佈正確的格式'你可以從現有的文章中學習,並通讀爲你這樣的人編寫的幫助材料_wealth_。無論你是新手,無所謂。歡迎! –

+0

@terk:您帖子的格式是正確的。 –

+3

@terk:格式化是可以的,但是您應該嘗試生成一個仍然顯示相同問題的_minimal但完整的程序。你只顯示了代碼的一部分,它似乎甚至不是真正的代碼的一部分,所以我們必須討論問題可能出在哪裏。 –

回答

1
在你的代碼 int check2 = sscanf(read, "%s %d %d", word, &number);格式說明

也是3,但論據2.

如果file包含類似

oneword 1 
secondword 2 
thirdword 3 
fourthword 4 

然後

數據
#include <stdio.h> 

int main() 
{ 
    FILE *fp = fopen("file", "r"); 
    char read[100]; 
    int integer; 
    char string[64]; 
    while (fgets(read, sizeof(read), fp) != NULL) 
    { 
     int check = sscanf(read, "%s %d", string, &integer); 
     if (check == 2) { 
      printf("%s, %d\n", string, integer); 
     } 
     else{ 
      printf("Failed to scan all values\n"); 
     } 
    } 
} 

和輸出是

oneword, 1 
secondword, 2 
thirdword, 3 
fourthword, 4 

可以修改fgets這裏由剛剛stdin符合更換fpwhile (fgets(read, sizeof(read), fp) != NULL)

+0

是的,除非我不打開文件,它與您的代碼幾乎相同。對不起,我試圖不讓它像一個家庭作業,所以我簡單。它實際上是一個.in文件,其中包含您所提及的輸入內容。所以這就是我所做的讀取行,然後在我的問題代碼。 fgets(read,sizeof(read),stdin); int check = sscanf(read,「%s%d」,string,&integer); printf(「%s,%d」,string,integer); – terk

+0

@terk它總是最好張貼您的確切代碼,而不是發佈它的位,並描述其他:) –

+0

@terk好..所以你可以檢查'stdin'。而且你的主題行'從文件中讀取一行並在c中轉換爲字符串混淆了每個人,因爲如果你不處理'file',那麼就不需要在這裏提及。 –

0

您正在使用sscanf

從讀取數據採取從stdin輸入char *根據參數格式輸入並將它們存儲到附加參數給出的位置如果使用scanf,但是從字符串讀取而不是標準輸入(stdin)。

你需要使用fscanfread你的代碼應該是指向FILE的指針。

+0

似乎你想要使用'sscanf',爲什麼不粘貼其餘的代碼,以便我們可以看到最新的錯誤,在你的代碼中讀入應該是char *或char [],並且應該包含值「單詞1「。 – Smitt

相關問題