Red de conocimiento informático - Material del sitio web - ¿Qué puedes hacer al aprender el lenguaje C en la universidad? ¿Para qué sirve? Aquí hay algunos ejemplos fáciles de entender.

¿Qué puedes hacer al aprender el lenguaje C en la universidad? ¿Para qué sirve? Aquí hay algunos ejemplos fáciles de entender.

No hay nada de malo en aprender. Cuando sales a trabajar, al menos si no programas, otros dicen que aún puedes entenderlo y no quedarás ciego.

No conozco la sintaxis básica del lenguaje C. Voy a mencionarla nuevamente. Muchos libros de programación en lenguaje C solo cubren algunos tipos de datos básicos, estructuras de datos, sintaxis y luego algunos ejemplos de cálculos numéricos. son iguales y el plagio es inevitable. Esto es una sospecha y la página tiene poco valor práctico.

Este libro utiliza ejemplos prácticos como guía de programación para guiar a todos a escribir programas verdaderamente prácticos. Entiendo que todo el mundo está más interesado en los programas piratas, los virus y los programas de ventana, así que los explicaré con estos ejemplos. Dado que básicamente todo el mundo usa Windows XP SP3, se lo explicaré después de depurar con éxito el programa en este sistema. En cuanto al entorno de programación, todavía me gusta Visual C++ 6.0

Este libro está previsto que cubra cuatro aspectos principales: clase de ventana, clase de operación de archivos, clase de red y clase de base de datos.

Todas son tecnologías populares y necesarias para la programación, y también son tecnologías que los desarrolladores de software deben dominar. En el medio, se utilizan ejemplos para explicar y aprender paso a paso. Creo que todos mejorarán mucho después de leerlo.

Capítulo 1: Escritura de programas de clase de ventana

Este capítulo explicará primero la escritura de programas de clase de ventana. Porque ahora los programas no tienen interfaz, al igual que las personas no tienen rostro, y una buena interfaz es más atractiva. A partir de la interfaz básica, creo que puede señalar un camino para todos, de modo que todos puedan dominar fácilmente la escritura de la secuencia de ventanas. De hecho, el diseño de la interfaz se crea fácilmente utilizando MFC de VC 6.0. Aquí comenzamos a escribir código desde abajo para escribir el programa de interfaz, de modo que todos puedan saber algunas cosas de bajo nivel y sentar una buena base para el aprendizaje futuro. Creo que después de aprender esto, se sentirá cómodo usando VC's MFC.

1.1

El primer programa de ventana escrito en C

Como comienzo de la programación, todavía comenzamos nuestro viaje de aprendizaje con un Hola mundo. El código es el siguiente:

#include

void main()

{

printf("Hola World!" );

}

Este es un programa C extremadamente simple. Siempre que tengas algunos conocimientos del lenguaje C, podrás entenderlo. Sin embargo, probablemente haya algunos personas aquí que aún no lo han hecho. Si saben qué es el archivo de encabezado stdio.h en #include

, déjenme explicarlo. stdio.h es un archivo de texto que existe en el. disk y ha sido VC. Por ejemplo, su ubicación es la que se muestra a continuación:

Quizás hayas oído que la función printf() está predefinida en stdio.h, pero ¿has visto su forma definida? mira la imagen a continuación

La forma de definición es como se muestra en la imagen. Quizás no entiendas cuáles son las cosas anteriores, no te preocupes, te las explicaré lentamente en el futuro. Las funciones deben definirse antes de poder usarse, por lo que la función printf se define en stdio.h. Después de hacer referencia al archivo de encabezado stdio.h, podemos llamar a la función printf en el programa.

Lo anterior es para mostrar un "¡Hola mundo!" en la línea de comando, lo cual no es interesante. A continuación, escribiré un programa de ventana para mostrar ¡Hola mundo!

#. incluir

void main()

{

MessageBox(NULL,"¡Hola mundo!","Mi primer programa de ventana",MB_OK );

}

Después de compilar y ejecutar, aparece la siguiente figura:

Lo que aparece es un cuadro de diálogo con Hola mundo, un título y un " Botón "Aceptar".

¿Por supuesto que dirías que este cuadro de diálogo también es una ventana? Déjame decirte con seguridad: Sí, el cuadro de diálogo es un subconjunto del programa de ventana.

También puede preguntar, ¿para qué sirve una ventana tan simple? De hecho, dicha ventana es muy útil cuando operamos la computadora, aparecerán algunos cuadros de diálogo de advertencia o aviso. Aunque esto sea muy sencillo, ¿acaso el aprendizaje no es siempre un proceso de pasos fáciles y difíciles, de lo simple a lo profundo?

Todo el efecto se debe casi en su totalidad a la función MessageBox. No presentaré esta función aquí, hablemos de otras cosas.

De hecho, escribir algunos programas malvados en C es básicamente sólo una cuestión de familiarizarse con algunas funciones proporcionadas en el entorno de programación. Use VC para escribir el programa. Hay muchos archivos de encabezado que definen muchas funciones API de Windows, estructuras de datos y macros, que todos podemos usar a través de ellos, podemos desarrollar rápidamente los programas que usamos. Consulte estas API de Windows en MSDN de Microsoft, que tiene muchas instrucciones y algunos ejemplos de código. No es posible ingresar el nombre de la función y encontrar información relevante. Se recomienda utilizar la versión en inglés de la Biblioteca porque su contenido es más completo que la versión en chino. Los estudiantes que no dominan el inglés deben leer primero la versión en chino.

MSDN chino:/

MSDN inglés:/library/en-us/

En este punto, hemos completado la escritura del primer programa con una interfaz. ¿Le resulta difícil escribir un programa con una interfaz? Aparentemente no es difícil.

Veamos un programa que interesa a Xiang Feng y Bobo: multiplicación noventa y nueve

Usando el formulario de línea de comando

#include “stdio.h”

p>

int i=0,j=0;

for(i=1;i<10;i++)

for(j=1;j

printf(“%d*%d=%d\t”,j,i,j*i);

printf(“\n” );

El efecto es el mismo que el de JavaScript, por lo que siempre que aprendas bien el mismo idioma, será fácil evitar los demás. Simplemente elige uno y apréndelo bien, no te preocupes. codicioso de demasiado.

Bien, eso es todo por esta sección. Primero, todos deben comprender MSDN de Microsoft, lo que será de gran ayuda para futuros estudios.

1.2 El primer programa de ventana real

En la sección anterior, utilizamos la función MessageBox para implementar fácilmente una ventana de diálogo. Puede decir que es simplemente inútil. cuadro, sí, es sólo un cuadro de diálogo. La razón por la que uso un cuadro de diálogo como ejemplo es porque solo quiero que sepas que escribir un programa con una interfaz no es difícil. Habiendo entendido esto, continuamos. Escribamos un programa de ventana real hoy.

El siguiente es un párrafo detallado. Dado que nunca antes ha escrito ningún programa de ventana, todo lo que ha escrito está bajo la línea de comando. Sabemos que los programas bajo la línea de comando tienen una función principal, principal. Esta función es también la función de entrada del programa. Ahora usamos VC 6.0 para escribir y necesitamos escribir programas de clase de ventana. VC 6.0 nos proporciona una función de entrada WinMain() especialmente utilizada para programas de clase de ventana

El prototipo de esta función es así

int WINAPI WinMain(

HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTRlpCmdLine,

int nCmdShow

);

¿Crees que esta función es bastante complicada, con tantos parámetros, pero main parece no tener parámetros? De hecho, main tiene parámetros que Xiang Feng y Xiao Si conocen. Sin embargo, los parámetros de la función principal se pueden omitir, pero los parámetros de WinMain no se pueden omitir. Aquí también necesitamos cambiar el modo de compilación de VC6.0

Mire la imagen a continuación

El orden es "Proyecto" → "Configuración" → "Conexión", y en el "Opciones de proyecto" Simplemente cambie la consola a Windows.

Si ha estudiado seriamente el ensamblaje o ha compilado y conectado programas en C con comandos escritos a mano, sabrá lo que esto hace. Consola significa consola. En el pasado, todos los programas que escribíamos usando la función principal estaban conectados en modo consola, por lo que rara vez había una interfaz. Ahora queremos escribir un programa con una interfaz, por lo que debemos seleccionar el modo Windows (ventana).

Escribimos el siguiente código y seguimos el método mencionado anteriormente para ver el resultado

#include "windows.h"

int WINAPI WinMain( HINSTANCEhInstance,

HINSTANCE hPreInstance,

LPSTR lpCmdLine,

int nShowCmd)

{

MessageBox(NULL ,"Ventana programa creado por WinMain","WinMain",MB_OK);

return0;

}

El resultado es como se muestra a continuación:

Compare con el código de la primera sección

#include “windows.h”

void main()

{

MessageBox (NULL,"¡Hola mundo!","Mi primer programa de ventana",MB_OK);

}

Comparando los dos, el último es más una ventana cmd. Se puede ver que la escritura en main no está completamente separada de la línea de comando. Entonces, en el futuro usaremos winmain al escribir programas de ventana.

Bien, date la vuelta y echemos un vistazo a la función WinMain(), que tiene 4 parámetros

Leamos primero la explicación (si no entiendes, tienes que léalo primero):

p>

hInstance: el identificador de la instancia actual de la aplicación.

hPrelnstance: El identificador de la instancia anterior de la aplicación. Si se abre el mismo programa dos veces y aparecen dos ventanas, la ventana que se abre por primera vez es la ventana de la instancia anterior. Para un programa de 32 bits, este parámetro siempre es NULL.

lpCmdLine: puntero a la cadena vacía de la línea de comando de la aplicación, excluyendo los nombres de las funciones. Para obtener la línea de comando completa, consulte GetCommandLine.

nCmdShow: Indica cómo se muestra la ventana (si está oculta o mostrada, si hay un botón de maximizar, etc.). Puede consultar MSDN para conocer el valor.

Creo que aquí hay una palabra con la que todos pueden no estar familiarizados: manejar (MANEJAR), ¿verdad? Permítanme hablar brevemente sobre ello a continuación

Un identificador es en realidad el identificador único de algo en el sistema Windows. Hay muchos programas o recursos en ejecución en el sistema para una mejor administración y uso, el sistema Windows les otorga a cada uno de ellos la misma identificación. Las personas que saben cómo crear páginas web deben conocer los ID de cada elemento de la página web. Si los ID de las páginas web se repiten, pueden producirse errores. Entonces, ¿los identificadores del sistema serán los mismos? Definitivamente ese no es el caso. Al igual que nuestra identificación de estudiante, el sistema asigna automáticamente identificadores a cada módulo, que no serán los mismos.

Primero puedes entender el identificador de esta manera, no es necesario que lo entiendas todo a la vez. Lo entenderás más adelante a medida que aprendas.

Supongo que todo el mundo está confundido acerca de los tipos de esos parámetros. De hecho, esos tipos no son tipos nuevos. Para la conveniencia de programar para ellos y para otros, los desarrolladores de Windows utilizan la sintaxis básica del lenguaje C para definir una nueva estructura, una estructura homogénea o un tipo de elevación. Sé que muchos profesores no cubren estructuras, sindicatos y tipos de enumeración, porque al final del libro, muchos profesores de C son profesores basura, por lo que no los enseñarán tan rápido.

De hecho, estos tipos de datos de estructuras son solo para construir un tipo más complejo a través de nuestros tipos de datos de uso común, como caracteres, enteros, puntos flotantes, etc. Por ejemplo, sabemos que C no tiene un tipo de datos que pueda describir un persona, entonces ¿Nos conviene programar si construimos uno? Podemos construir una

estructura Personas

{

intage;//Edad

charsex[2];//Género< / p>

intheight;//Altura

......

}

Después de definirlo de esta manera, podemos usar estos datos en nuestros programas futuros Tipo, Personas zhangsan; coloque la altura de zhangsan 172 en zhangsan.height. Esto hace que sea más fácil realizar una gran cantidad de trabajo. Entonces, la estructura es muy simple y otros tipos de datos complejos también son muy simples. Todos usan tipos simples de uso común para combinarlos y construir uno complejo. Esto es muy similar a definir una clase en JAVA. Java define una clase de persona, lo cual no es posible

clase pública Personas

{

publicint age;

publicstring sex;

publicheight;

}

Todos se ven similares y se usan de manera muy similar . La única diferencia es que las clases pueden tener métodos, pero las estructuras no (es posible después de un procesamiento especial, por lo que no es necesario considerarlo aquí).

Lo anterior son muchas palabras para que todos comprendan la definición de tipos de datos complejos. Echemos un vistazo al tipo del primer parámetro en WinMain. HINSTANCE es solo una estructura. De hecho, es similar al tipo de HANDLE, pero hay una pequeña diferencia. HANDLE se define como este typedef PVOID HANDLE. ¿Qué es PVOID? Echemos un vistazo a typedef void *PVOID; que muestra que PVOID es un puntero que inicialmente apunta a void. Entonces podemos saber que el identificador es solo un puntero. Parece muy complicado, pero resulta ser sólo un indicador.

Estos se pueden encontrar en el msdn de Microsoft y son muy detallados.

El segundo LPSTR significa literalmente que es un tipo de cadena. Compruébalo y efectivamente lo es.

Todos deben hacer un buen uso de msdn, es muy útil.

Esta sección termina aquí. Explica principalmente la función y estructura de WinMain. No es demasiado y todos deberían poder aceptarlo. La siguiente sección tratará sobre algo un poco más complicado y profundo. Espero que todos estén mentalmente preparados.

1.3 Escribir programas de ventana

Antes de entrar en detalles, espero que puedas estar preparado. Esta sección tiene mucho conocimiento y el contenido es un poco largo. Espero que puedas leerlo de una sola vez. Si no puedes terminarlo de una vez, cambia tu respiración y continúa leyendo.

En la sección anterior, utilizamos MessageBox() para implementar una ventana real. El prototipo en MessageBox() es el siguiente:

Int MessageBox(HWND hWnd,

LPCTSTRlpText,

LPCTSTRlpCaption,

UINT uType );

Explicación del parámetro

hWnd es el identificador de la ventana a la que pertenece el cuadro de diálogo. Si es NULL, el cuadro de diálogo no pertenece a ninguna ventana.

lpText El contenido de visualización de la ventana de diálogo.

lpCaption El título de la ventana de diálogo.

El estilo y las acciones del cuadro de diálogo uType (como el botón Aceptar o el botón Cancelar se configuran aquí)

Para obtener detalles sobre esta función, puede ver aquí

/en-us/library/ms645505(VS.85).aspx

En este punto, ha aprendido a escribir programas de ventana, pero es solo el comienzo, pero esto ya es Muy bien, puede hacerte sentir el encanto de C y es posible que también tengas algunas dudas sobre lo que puede hacer el lenguaje C. Antes de comenzar a escribir código, primero debo explicar los detalles y principios.

El proceso de creación de una ventana siguiente de Windows tiene los siguientes pasos:

1. Cuando el programa crea una ventana, primero debe registrar una clase de ventana wndclassex con el sistema Windows, la cual en realidad está definiendo una variable, el tipo de variable es WNDCLASSEX (estructura). La definición e introducción de esta estructura se puede encontrar aquí (/en-us/library/ms633577(VS.85).aspx),

typedef struct {

UINT cbSize;

Estilo UINT;

WNDPROC lpfnWndProc;

int cbClsExtra;

int cbWndExtra;

HINSTANCE hInstance;

HICON hIcon;

HCURSOR hCursor;

HBRUSH hbrBackground;

LPCTSTR lpszMenuName;

LPCTSTR lpszClassName;

HICON hIconSm;

} WNDCLASSEX, *PWNDCLASSEX;

Presentación del miembro

El valor de cbSize es sizeof(WNDCLASSEX), que debe ser obtenido antes de llamar a GetClassInfoEx Establezca su valor primero.

estilo es el estilo de la clase de ventana. Su valor puede ser cualquier combinación de valores de estilo de ventana.

Puede tener los siguientes valores

lpfnWndProc apunta a la función de procesamiento de ventanas (función de devolución de llamada). Esta función controla el manejo de eventos de ventana, como lo que sucede cuando se hace clic con el mouse y lo que sucede cuando se hace clic con el botón derecho del mouse.

cbClsExtra registra información adicional de la clase de ventana y el sistema se inicializa a 0.

cbWndExtra registra información adicional sobre la instancia de la ventana. El sistema está inicialmente configurado en 0. Si el programa usa WNDCLASSEX para registrar un cuadro de diálogo creado a partir de un archivo de recursos, este parámetro debe configurarse en DLGWINDOWEXTRA.

hIcon El icono de la clase de ventana es un identificador de recurso. Si se establece en NULL, el sistema proporcionará un icono predeterminado para la ventana.

hCursor El estilo del mouse de la clase de ventana es el identificador del recurso de estilo del mouse. Si se establece en NULL, el sistema proporciona un estilo de mouse predeterminado.

hbrBackground es el pincel de fondo de la clase de ventana. Es el controlador del pincel de fondo o el valor de color del sistema. Si se proporciona el valor de color, se debe convertir al siguiente valor HBRUSH.

· COLOR_ACTIVEBORDER

· COLOR_ACTIVECAPTION

· COLOR_APPWORKSPACE

· COLOR_BACKGROUND

· COLOR_BTNFACE

· COLOR_BTNSHADOW

· COLOR_BTNTEXT

· COLOR_CAPTIONTEXT

· COLOR_GRAYTEXT

· COLOR_HIGHLIGHT

· COLOR_HIGHLIGHTTEXT

· COLOR_INACTIVEBORDER

· COLOR_INACTIVECAPTION

· COLOR_MENU

· COLOR_MENUTEXT

· COLOR_SCROLLBAR

· COLOR_WINDOW

· COLOR_WINDOWFRAME

· COLOR_WINDOWTEXT

lpszMenuName apunta a una cama de caracteres terminada en NULL, igual que el nombre del recurso del directorio. Si usa una identificación entera para representar el menú, puede definir una macro con MAKEINTRESOURCE. Si su valor es NULL, las ventanas creadas por esta clase no tendrán un menú predeterminado.

lpszClassName El nombre de la clase de ventana, tipo cadena.

hIconSm El identificador del icono pequeño El icono que se muestra en la barra de tareas puede ser el mismo que el de arriba.

Después de definir una variable de tipo WNDCLASSEX e inicializar los miembros de la variable, podemos usar

RegisterWindowEx(&wndclassex) para registrar la clase de ventana.

Este proceso de registro es como cuando normalmente creamos un proyecto. Primero debes registrarte antes de poder crearlo.