William C. Holmes was born on September 15, 1834, in Ohio to Hugh F. Holmes and Harriet Campbell. His father was a farmer who owned $800 of real estate and $775 of personal property by 1860. The family moved to Richland, Indiana, around 1838 and then to Wayne, Ohio, sometime in the late 1840s. Holmes attended school in Wayne, and by 1850, he was working as a laborer.
The family settled in Des Moines, Iowa, in the late 1850s, and Holmes continued working on his parents’ farm. He enlisted in the Union army on August 14, 1862, and mustered in as a private in Company H of the 19th Iowa Infantry one week later. The regiment took part in the siege of Vicksburg. He was captured near Atchafalaya, Louisiana, on September 29, 1863, and he spent the next ten months imprisoned in Tyler, Texas. He was exchanged in July 1864 and rejoined his regiment soon afterward. He fought in the Battle of Fort Blakeley in April 1865, and he mustered out in Mobile, Alabama, on July 10, 1865.
Holmes returned to his parents’ farm in Iowa after the war, and by 1870, he owned $800 of real estate and $245 of personal property. He married Mary Anna Hill around 1879, and they had five children: Mildred, born around 1880; Charles, born around 1882; Martha, born around 1884; William, born around 1889; and Ralph, born around 1891. They moved to Roscoe, Iowa, in the late 1800s, and Holmes continued working as a farmer. He died from an abscess in his side in Roscoe, Iowa, on June 28, 1904.