Así es, el carácter nulo '\0' es de tipo char, mientras que "\0" es una cadena, o sea que es tipo char*, un puntero. Por eso, estrictamente hablando, son cosas diferentes.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menú
#include<stdio.h>
typedef struct
{
int x;
}numero;
void uno (numero *n_ptr);
void dos (numero *n_ptr);
main()
{
numero n;
uno(&n);
}
void uno (numero *n_ptr)
{
dos (n_ptr); // se pasa una copia del puntero a "dos"
}
void dos (numero *n_ptr)
{
(*nptr).x += 1;
}
#include<stdio.h>
typedef struct
{
int x;
}numero;
void uno (numero *n_ptr);
void dos (numero *n_ptr);
main()
{
numero n;
n.x = 3;
printf ("antes n.x era: %d\n", n.x);
uno (&n);
printf ("ahora n.x es: %d\n", n.x);
}
void uno (numero *n_ptr)
{
dos (n_ptr); // se pasa una copia del puntero a "dos"
}
void dos (numero *n_ptr)
{
(*n_ptr).x += 1;
}
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, x[3];
/* pedir numeros al usario */
for ( i = 0; i < 3; i++ ) {
printf( "Intro valor %d: ", i+1);
scanf( "%d", &x[i] );
getchar();
}
/* imprimiendo contenido del arreglo */
for ( i = 0; i < 3; i++ ) {
printf( "Valor %d: %d\n", i+1, x[i] );
}
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
#define N 3
int main(void)
{
int i, x[N];
/* pedir numeros al usario */
for ( i = 0; i < N; i++ ) {
printf( "Intro valor %d: ", i+1);
scanf( "%d", &x[i] );
getchar();
}
/* imprimiendo contenido del arreglo */
for ( i = 0; i < N; i++ ) {
printf( "Valor %d: %d\n", i+1, x[i] );
}
return EXIT_SUCCESS;
}
fgets( char * buffer, int N, FILE * stream );
scanf("%s", nombre);
#define N 40
char nombre[N];
fgets( nombre, N, stdin );
if ( ( len = strlen( nombre ) ) > 0 && nombre[len - 1] = '\n') nombre[len - 1] = '\0';
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <ctype.h>
#define MAX 40
char * str_to_lower( char *);
int main()
{
FILE *fd = NULL;
char name[MAX];
unsigned long len;
char ready;
char dir_name[100]; /* nombre de directorio */
DIR * dir_ptr = NULL; /* apuntador a directorio */
struct dirent * dirent_ptr; /* estructura 'directory-entry' */
char * f_name; /* name de cada fichero leído en el directorio */
printf("Que archivo quieres abrir: ");
fgets( name, MAX, stdin );
/* quitamos el '\n' al final de la cadena */
if ( ( len = strlen( name ) ) > 0 && name[len - 1] == '\n' )
name[len - 1] = '\0';
strcat( name, ".txt" ); /* añadimos '.txt' al final */
/* pongamos el directorio como el actual, puedes cambiarlo xD */
strcpy( dir_name, ".");
/* 'abrimos' el directorio para leer su contenido */
if ( ( dir_ptr = opendir( dir_name ) ) == NULL ) {
printf( "No existe o no se pudo abrir el directorio '%s'\n", dir_name );
return -1;
}
/* ahora recorremos todo el directorio, buscando
* names de fichero que coincidan */
ready = 0;
while ( ( dirent_ptr = readdir( dir_ptr ) ) != NULL ) {
f_name = dirent_ptr -> d_name;
/* verificamos omitiendo mayúsculas y minúsculas */
if ( ! strcmp( str_to_lower(name), str_to_lower(f_name) ) )
if((fd = fopen(f_name, "r")) != NULL) {
printf("Se abrio '%s'\n", f_name);
ready = 1;
}
}
/* y si al finalizar el ciclo no encontro, emitir error */
if ( !ready )
printf("No se pudo abrir el archivo\n");
/* cerramos el directorio, y el fichero */
if ( dir_ptr != NULL ) closedir( dir_ptr );
if ( fd != NULL ) fclose( fd );
return 0;
}
/* Pasa todos los caracteres de la cadena a minúsculas */
char * str_to_lower( char * s ) {
size_t k = 0;
while ( s[k] != '\0' ) {
if ( isalpha( s[k] ) ) s[k] = tolower( s[k] );
k++;
}
return s;
}