It would help more if you made the example a complete document but anyway that D
is dcolumn
syntax so most likely adding
\usepackage{dcolumn}
to the preamble will fix the problem, although that is untested as you have not provided a test file.
There is no syntax c{<width>}
for a centered column of fixed width.
If your version the array
package is 2.4f (2017/11/07) or newer you can use the column type w{<alignment>}{<width>}
that is
\begin{tabular}{|l|w{c}{4cm}|}
for a centered column of fixed width (this needs the array
package, of course). However, this overprints if the cell contents is wider than the width specified. And this would be the case for the table in your MWE.
I suggest to instead define a suitable paragraph column yourself:
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
This need the array
package, too, of course.
\documentclass[12pt]{book}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\begin{tabular}{|l|C{4cm}|}
\hline
Classe de caractère & Siginification\\
\hline
[abc$^\wedge$] & Un unique caractère qui peut être a, b ou c \\
\hline
$[^abc]$ & Le $^\wedge$ exprime la négation: cette classe représente un
unique caractère, qui peut prendre toutes les valeurs, sauf a,
b et c \\
\hline
\end{tabular}
\end{document}
If I understand you table correctly I also like to suggest not using mathmode but verbatim:
\documentclass[12pt]{book}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\newcommand\code[1]{\texttt{#1}}
\begin{document}
\begin{tabular}{|l|C{4cm}|}
\hline
Classe de caractère & Siginification\\
\hline
\verb+[abc^]+ & Un unique caractère qui peut être \code{a}, \code{b} et
\code{c} \\
\hline
\verb+[^abc]+ & Le \verb+^+ exprime la négation: cette classe représente un
unique caractère, qui peut prendre toutes les valeurs, sauf
\code{a}, \code{b} et \code{c} \\
\hline
\end{tabular}
\end{document}
Best Answer
A cursory glance at
arrayjob.sty
shows it defines a macro\array
so it would be incompatible with LaTeX in any case. The same directory has anarrayjobx.sty
that says