Aracılığıyla paylaş


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 EINVALayarlanırerrno.

Bunlar ve diğer hata kodları hakkında bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

Açıklamalar

sscanf işlevi, verilerini buffer her argumenttarafından verilen konuma okur. Her argument , içindeki bir tür tanımlayıcısına formatkarşı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 sscanfbir 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 sscanfgeniş 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 swscanfsscanf 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 Rutin _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