Welcome to TeX.SE!
What you are trying to do is often achieved with the tabularx package. It provides an X column that takes an automatically calculated width. The width of each of the X columns is calculated from the argument to the tabularx environment, minus the space reservations for other, non-X columns, and divided equally between the X columns. You can further modify the X columns with the > syntax before the column specifier, e.g. by centring the column: >{\centering}X. Note that if the last column is also modified in that way, it needs to include \arraybackslash for reasons explained, e.g., here, or in the tabularx manual.
I took the liberty to load the booktabs package as well and inserted its nice \midrule to replace the vertical bars from your original table.
\documentclass[a4paper,12pt,fleqn,twoside,openright]{book}
\usepackage{caption}
\usepackage{tabularx,booktabs}
\begin{document}
\begin{table}
\centering
\caption{table}
\label{table:table}
\begin{tabularx}{\textwidth}{>{\centering}X>{\centering}X>{\centering\arraybackslash}X}
\toprule
\textbf{1} & \textbf{2} & \textbf{3} \\ \midrule
A & A very long line that automatically breaks & Somtimes it can be a good idea to consider having less characters in a table cell if at all possible\\
B & b & b \\
C & c & c \\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
As a further modification, your column specification could also look like:
\begin{tabularx}{\textwidth}{l >{\centering}X>{\centering\arraybackslash}X}
as the first column does not include any multi-line text. In this case, the width for the two X columns will be
(\textwidth minus 6\tabcolsep minus (width of first l column)) divided by 2
If you wanted to have a fixed width for one of the columns, you could use the usual p{width}, e.g.
\begin{tabularx}{\textwidth}{p{1cm} >{\centering}X>{\centering\arraybackslash}X}
and the width for the remaining X columns would update according to the remaining space.
\textwidth. Please state a few more. – Mico Feb 19 '20 at 16:55