2013-06-20 146 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