2013-06-20 148 views
4

我想讀取多維數組內的字符串的內容......問題是,當我這樣做時,sscanf繼續只讀取第一個字符...使用sscanf多次讀取字符串

在我的字符串我有這樣的:

A1+A2+A3+A4. 

我想讀%C%d,我可以讀這一點,如果這只是A1,但這種情況發生時,只讀取A1 ...

我這樣做只讀第一個字符:

if(sscanf(array[line][colum], "%c%d", &colum, %line) == 2){ 
    printf("COL: %c, Line: %d", colum, line); 

怎樣才能讀取整個字符串?

回答

3

在格式字符串中使用%n說明符。

E.g.

#include <stdio.h> 

int main(void){ 
    const char *str="A1+A2+A3+A4."; 
    char col; 
    int line; 
    int offset = 0, readCharCount; 
    while(sscanf(str + offset, "%c%d%*c%n", &col, &line, &readCharCount)==2){ 
     printf("%c, %d\n", col, line); 
     offset += readCharCount; 
    } 
    return 0; 
} 
/* result 
A, 1 
A, 2 
A, 3 
A, 4 
*/ 
+0

並且爲了取代它們各自的值的「pair」A1的位置,例如,A1的數組的值爲,在我的數組,array [0] [0]? 使用這樣的簡單替換,我只使用strcpy,但如果我在這種情況下使用,我將取代所有的字符串,並且它不是我想要的,我想保留所有其他值.. – GoldenMedal

+0

而且我越來越無限循環,而我在第一parram陣列[行] [col] .... [code] sscanf(陣列[行] [col] +偏移..... [/ code] – GoldenMedal

+0

'無限循環,而我正在採取數組[行] [col]在第一個parram'也許做初始化(每個循環)它到'offset'的循環值? – BLUEPIXY