¿Cómo leer un archivo línea por línea en C?

Tengo un archivo de texto con hasta 100 direcciones IP, 1 por línea. Necesito leer cada dirección, como una cadena, en una matriz llamada "lista". Primero, asumo que la "lista" tendrá que ser una matriz de caracteres bidimensional. Cada dirección IP tiene una longitud de 11 caracteres, 12 si incluye '\ 0', así que declaré la lista de la siguiente manera:

char list[100][12];

A continuación, intento usar fgets para leer la secuencia:

  for (i = 0; i < 100; i++)  
  {  
      if (feof(stream))  
          break;  
          for (j = 0; j < 12; j++)  
          fgets(&list[i][j], 12, stream);  
      count++;  
  }

Para verificar si las cadenas se leyeron correctamente, intento emitirlas:

  for (i = 0; i < 5; i++)  
  {  
      for (j = 0; j < 11; j++)  
          printf("%c", list[i][j]);  
      printf("\n");  
  }

Después de ejecutar el programa, está claro que algo está mal. Siendo un principiante, no estoy seguro de qué, pero supongo que estoy leyendo mal el archivo. No hay errores. Se compila, pero imprime una dirección extraña en dos líneas.

Editar:

Reemplacé el código de fgets con esto:

for (i = 0; i < 100; i++)
  {
      if (feof(stream))
          break;
      fgets(list[i], 12, stream);
      count++;
  }

Ahora imprime cinco cadenas, pero son caracteres "aleatorios" de la memoria.

Respuestas a la pregunta(7)

Su respuesta a la pregunta