我想知道爲什麼i
的值爲0
之前已經調用了sscanf
。我期待修改i
的價值。爲什麼sscanf不填充變量?
我使用在窗口7 cygwin的GCC,版本3.4.4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
unsigned char a[] = {1, 2, 3, 4, 5};
int i = 0;
printf("\nread value %d\n", sscanf(&a, "%d", &i));
printf("\nvalue is %d\n", i);
printf("\nbuffer is %s\n", a);
}
輸出
讀取值0
值爲0
緩衝器是一些特殊字符
亞我明白了。我認爲像'sscanf'會先讀取4個字節(1,2,3,4),它會嘗試用4個字節值的組合來打印某個大數字。實際上,只有當'a'的每個字節包含48到57(0到9)的值時,它纔會被讀取。感謝你的解釋。 – rashok
我對sscanf有另一個疑問。 – rashok
我對sscanf有另一個疑問。考慮'unsigned char a [3] = 0;'buffer。並考慮我在第一個2字節stroing一些有效的數字。因此'printf(「%s」,a)'正在打印某個值('75')。在這種情況下,如果我做'sscanf(&a,「%d」,&i)'這個語句是否會嘗試讀取第四個字節,否則一旦滿足'\ 0',它將簡單地退出3字節本身。 – rashok