Red de conocimiento informático - Espacio del host - Hay un problema con uno de mis programas de lenguaje C de almacenamiento WiFi.

Hay un problema con uno de mis programas de lenguaje C de almacenamiento WiFi.

Algo interesante. La razón es sorprendentemente simple. char*rwtab[27]={"principal","si","entonces","mientras","hacer","estático","int","doble","estructura","romper","else ","long","switch","case","typedef","char","return","const","float","short","continuar","for","void", "sizeof","default","do"}; falta un elemento, solo hay 26 elementos, rwtab[26] es un puntero nulo y se produce un error al acceder a él. El mensaje de error es el siguiente: Cuando no modifiqué esta oración, agregué la siguiente oración donde señalaste el error: for(n=0;n<27;n++) if(strcmp(token,rwtab[n]) ==0) //Compare si la palabra clave es { printf("Cathchakey-word\n"); // } Se produjo un error. El mensaje de solicitud es el siguiente: Esto significa que se accedió a un puntero nulo. Modifíquelo de la siguiente manera: char*rwtab[27]={"main","if","then"," while","do","static","int",\"double","struct"," break ","else","long","switch","case",\"typedef","char","return","const","float","short","continue",\" for ","void","sizeof","default","do","long"};// A la matriz le falta un elemento, no hay 27 elementos y hay espacios delante de varias otras palabras clave, que también debería eliminarse. Se agregó un símbolo de continuación de línea. Después de la modificación, la operación fue exitosa: utilicé su programa para crear un.txt y generar los archivos b.txt y c.txt. No sé qué pasó hoy, así que no pude cargarlos. ¿Por qué es esto? Es muy misterioso: hay un elemento menos en la matriz rwtab y rwtab[26] hará referencia a un puntero nulo, lo que provocará un error. Cuando no hay declaraciones aquí, el bucle no tiene declaraciones sustanciales. El compilador está optimizando y no compilará las declaraciones de este bucle. No hay contenido en estas oraciones en el programa, por lo que no se producirá ningún error. Una vez que hay una declaración, no se puede omitir y se producirá un error. Es así de simple. Además, su programa debe compilarse como un programa C++; de lo contrario, no se aprobará. C no permite que se definan variables después de declaraciones sustanciales. Las descripciones de las variables deben colocarse al principio del párrafo correspondiente y no se admiten comentarios //. Compilé exitosamente usando DEVC++, pero no pude compilar usando WINTC.