sscanf
, _sscanf_l
, swscanf
, _swscanf_l
Bir dizeden biçimlendirilmiş verileri okuma. Bu işlevlerin daha güvenli sürümleri mevcuttur; bkz. sscanf_s
, _sscanf_s_l
, swscanf_s
. _swscanf_s_l
Sözdizimi
int sscanf(
const char *buffer,
const char *format [,
argument ] ...
);
int _sscanf_l(
const char *buffer,
const char *format,
_locale_t locale [,
argument ] ...
);
int swscanf(
const wchar_t *buffer,
const wchar_t *format [,
argument ] ...
);
int _swscanf_l(
const wchar_t *buffer,
const wchar_t *format,
_locale_t locale [,
argument ] ...
);
Parametreler
buffer
Depolanan veriler
format
Biçim denetimi dizesi. Daha fazla bilgi için bkz . Biçim belirtimi söz dizimi.
argument
İsteğe bağlı bağımsız değişkenler
locale
Kullanılacak yerel ayar
Dönüş değeri
Bu işlevlerin her biri başarıyla dönüştürülen ve atanan alan sayısını döndürür; dönüş değeri okunmuş ancak atanmamış alanları içermez. 0 dönüş değeri, hiçbir alanın atanmadığını gösterir. Dönüş değeri EOF
bir hata içindir veya ilk dönüştürmeden önce dizenin sonuna ulaşılırsa.
veya format
bir işaretçiysebuffer
, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi NULL
çağrılır. Yürütmenin devam etmesi için izin verilirse, bu işlevler -1 döndürür ve olarak EINVAL
ayarlanırerrno
.
Bunlar ve diğer hata kodları hakkında bilgi için bkz. errno
, _doserrno
, _sys_errlist
ve _sys_nerr
.
Açıklamalar
sscanf
işlevi, verilerini buffer
her argument
tarafından verilen konuma okur. Her argument
, içindeki bir tür tanımlayıcısına format
karşılık gelen bir türe sahip bir değişkenin işaretçisi olmalıdır. format
bağımsız değişkeni, giriş alanlarının yorumlanmasını denetler ve işlevin bağımsız değişkeniyle format
aynı biçime ve işleve scanf
sahiptir. Kopyalama çakışan dizeler arasında gerçekleşirse, davranış tanımlanmamıştır.
Tarama türü alan karakterleri hakkında bilgi için bkz scanf
. tür alanı karakterleri. Tarama biçimi belirtimi alanları hakkında bilgi için bkz . Biçim belirtimi alanları.
Önemli
ile sscanf
bir dize okurken her zaman biçim için %s
bir genişlik belirtin (örneğin, "" yerine "%32s
%s
"); aksi takdirde, yanlış biçimlendirilmiş giriş kolayca arabellek taşmasına neden olabilir.
swscanf
, öğesinin sscanf
geniş karakterli bir sürümüdür; için bağımsız değişkenler swscanf
geniş karakterli dizelerdir. sscanf
çok baytlı onaltılık karakterleri işlemez. swscanf
Unicode tam genişlikli onaltılık veya "uyumluluk bölgesi" karakterlerini işlemez. Aksi takdirde ve swscanf
sscanf
aynı şekilde davran.
Bu işlevlerin sonekli _l
sürümleri aynıdır, ancak geçerli iş parçacığı yerel ayarı yerine geçirilen yerel ayar parametresini kullanırlar.
Genel metin yordamı eşlemeleri
TCHAR.H olağan |
_UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
---|---|---|---|
_stscanf |
sscanf |
sscanf |
swscanf |
_stscanf_l |
_sscanf_l |
_sscanf_l |
_swscanf_l |
Gereksinimler
Yordam | Gerekli başlık |
---|---|
sscanf , _sscanf_l |
<stdio.h> |
swscanf , _swscanf_l |
<stdio.h> veya <wchar.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
// crt_sscanf.c
// compile with: /W3
// This program uses sscanf to read data items
// from a string named tokenstring, then displays them.
#include <stdio.h>
int main( void )
{
char tokenstring[] = "15 12 14...";
char s[81];
char c;
int i;
float fp;
// Input various data from tokenstring:
// max 80 character string:
sscanf( tokenstring, "%80s", s ); // C4996
sscanf( tokenstring, "%c", &c ); // C4996
sscanf( tokenstring, "%d", &i ); // C4996
sscanf( tokenstring, "%f", &fp ); // C4996
// Note: sscanf is deprecated; consider using sscanf_s instead
// Output the data read
printf( "String = %s\n", s );
printf( "Character = %c\n", c );
printf( "Integer: = %d\n", i );
printf( "Real: = %f\n", fp );
}
String = 15
Character = 1
Integer: = 15
Real: = 15.000000
Ayrıca bkz.
Akış G/Ç
fscanf
, _fscanf_l
, fwscanf
, _fwscanf_l
scanf
, _scanf_l
, wscanf
, _wscanf_l
sprintf
, _sprintf_l
, swprintf
, _swprintf_l
, , __swprintf_l
snprintf
, _snprintf
, _snprintf_l
, _snwprintf
, , _snwprintf_l