Red de conocimiento informático - Computadora portátil - Colección de programación en lenguaje C 134

Colección de programación en lenguaje C 134

Descripción general de la función sscanf en lenguaje C

En el proceso de procesamiento de cadenas, a menudo analizamos las cadenas e interceptamos los datos que necesitamos de una larga cadena de cadenas. Si utilizamos nuestras propias funciones escritas a mano para analizar, es posible, pero una vez que conozca la función sscanf, no es necesario que escriba el análisis de la función usted mismo.

Utilizar estas funciones es muy sencillo. En resumen, quedará claro la próxima vez que lo utilices. Como dice el refrán, una buena memoria no es tan buena como una mala escritura.

El código fuente a continuación es el archivo fuente de mi prueba, con comentarios.

1./****************************************** ************

2.** Nombre: sscanf.c

3.** Autor: gzshun

4.**Versión: 1.0

5.**Fecha: 2011-12

6.**Descripción: función sscanf

7.*** ************************************************** * */

8.# incluir & ltstdio.h & gt

9.# incluir & ltstdlib.h & gt

10.# incluir & ltstring . h & gt

11.

12. estático sscanf _ test(void);

13.

14. void sscanf_test(void)

15.{

16.int ret

17.char * cadena

18.int número;

19.char buf 1[255];

20.char buf 2[255];

21.char buf 3[255];

22.char buf 4[255];

23.

24./*1 El uso más simple*/

25. string = "Beijing, China 123";

26.ret = sscanf(string, "%s %s %d", buf1, buf2, & amp número);

27 printf("1.string=%s\n ", cadena);

28.printf("1.ret=%d, buf1=%s, buf2=%s, digit=%d. \ n\n ", ret, buf1, buf2, digit);

29./*

30.**Resultados de la implementación:

31.* * 1.ret=2, buf 1 = China, buf2 = Beijing, dígito=123

32.** Se puede ver que el valor de retorno de sscanf es el número de parámetros leídos.

33.*/

34.

35./*2 Obtiene una cadena de longitud especificada*/

36. cadena = " 123456789 ";

37.sscanf(cadena, " %5s ", buf 1);

38.printf("2.string=%s\n ", cadena);

39.printf("2.buf1=%s\n\n ", buf 1);

40./*

41 .**Resultados de la implementación:

42.**2.buf1=12345

43.*/

44.

45 ./*3.String hasta el carácter especificado*/

46.string = " 123/456 ";

47.sscanf(string, "%[^ /"), buf 1);

48.printf("3.string=%s\n ", cadena);

49.printf("3.buf1=% s\n\ n ",buf 1);

50./*

51.**Resultado de la implementación:

52.**3.buf1 =123

53.*/

54.

55./*4. Cadena hasta el conjunto de caracteres especificado*/

56.string = " 123 ABC ABC ";

57.sscanf(cadena, "%[^A-Z"), buf 1);

58.printf("4 .string=%s\ n ", cadena);

59.printf("4.buf1=%s\n\n ", buf 1);

60./ *

61.**Resultados de la implementación:

62.**4.buf1=123abc

63.*/

64 .

65./*5. Obtiene una cadena que contiene solo el conjunto de caracteres especificado*/

66.string = " 0123 ABC ABC ";

67.sscanf(string, " %[0-9]%[a-z]%[A-Z]", buf1, buf2, buf 3);

68.printf("5.string=%s\ n ", string);

69.printf("5.buf1=%s, buf2=%s, buf3=%s\n\n ", buf1, buf2, buf 3);

p>

70./*

71.**Resultados de la implementación:

72.**5.buf1=123

73.*/

74.

75./*6. Obtiene la cadena entre los caracteres especificados*/

76.string = "ios & ltAndroid & gtwp7"; p>77.sscanf(string, "%*[^<]<%[^>]", buf 1);

78.printf("6. string=%s\n ", cadena);

79.printf("6.buf1=%s\n\n ", buf 1);

80./*

81.**Resultados de la implementación:

82.**6.buf1=android

83.*/

84. >85./*7.Especifique la cadena que se omitirá*/

86.string = " iosVSandroid

87.sscanf(string, " % [a-z]VS%[a-z ]", buf1, buf 2);

88.printf("7.string=%s\n ",string);

89.printf("7.buf1=%s,buf2=%s\n\n ",buf1,buf 2);

90./*

91.**Resultados de la implementación:

92.**7.buf1=ios, buf2=android

p>

93.*/

94.

95./*8.Cadena dividida*/

96.cadena = " Android -iphone-wp7 ";

97./*

98.* *La cadena pasa por '-', seguida del delimitador '-'.

99.** juega un papel filtrante, algo similar al punto 7.

100.*/

101.sscanf(cadena, "%[^-]-%[^-]-%[^-"), buf1, buf2, buf 3 );

102.printf("8.string=%s\n ",string);

103.printf("8.buf1=%s,buf2=%s , buf3=%s\n\n ", buf1, buf2, buf 3);

104./*

105.**Resultados de la implementación:

106.**8.buf1=android,buf2=iphone,buf3=wp7

107.*/

108.

109./* 9 Extraer dirección de correo electrónico */

110.string = "Email:Beijing @ Sina . com . cn "; [^@]@%[^.].%s", buf1, buf2, buf3, buf 4);

112.printf("9.string=%s\n ", string);

113.printf("9.buf1=%s,buf2=%s,buf3=%s,buf4=%s\n\n ",buf1,buf2,buf3,buf 4 );

114./*

115.** Resultados de la implementación:

116.* * 9. buf 1 = buzón, buf2 = Beijing, buf3 = Sina, buf4=com.cn

117.*/

118.}

119.

120.int main( int argc, char **argv)

121.{

122.sscanf_test();

123.

124 .Return 0;

125.}

126.

127./*

128.**Programa de prueba

129 .**Entorno:

130.* * Linux Ubuntu 2 6 32-24-generic-PAE # 39-Ubuntu SMP miércoles 28 de julio 07:39:26 UTC 2065 438 +00 i686 GNU/. Linux

131.**gcc versión 4.4.3 (Ubuntu 4.4.3-4ubuntu5)

132.**

133. ~/c/sscanf $ gcc sscanf .

/sscanf

135.1.string=Pekín, China

136.1.ret=3, buf 1=China, buf2=Pekín, dígito=123

137.

138.2 .cadena = 123456789

139.2 .buf 1 = 12345

140.

141.3 . p >

142.3 . buf 1 = 123

143.

144.4 . cadena = 123 ABC ABC

145.4 . p >

146.

147.5 . cadena = 0123 ABC ABC

148.5 . buf 1 = 0123, buf2=abc, buf3=ABC

149.

150.6 . cadena = IOs <android & gtwp7

151.6 . = iovsandroid

154.7.buf1=ios,buf2=android

155.

156.8 cadena = Android-iphone-wp7

. 157.8.buf1=android,buf2=iphone,buf3=wp7

158.

159.9.string=Correo electrónico:beijing@sina.com.cn

160.9 buf 1 = buzón, buf2 = Beijing, buf3 = Sina, buf4 = com.cn

161.*/

Este artículo proviene del texto original del sitio web de Linux Commune (. www.linuxidc.com) Enlace:/Linux/2011-12/49711.htm.