I thought all cs that are pronounced as an s in French have a cedilla but why does the word porcelaine not have one?
C can be pronounced [k] or [s].
C is pronounced [k] before a, o, u, or any consonant (except h). Call this the "hard" C.
calembour cour cul croquer
C is pronounced [s] before e, i, y. Call this the "soft" C.
ceci cire cyan
(These rules are all true in English, too.)
The French cédille is used when the spelling gives you a hard C, but you actually need a soft C. The cédille overrides the rules for a hard C to make it soft.
This usually happens for one of two reasons:
Conjugation. For example, in the verb "recevoir", the C is soft because it comes before e. But the past tense has a u instead: "recu" ! But we remember that the C was supposed to be soft in the default form. So the cédille comes to the rescue to make it soft despite the u: "reçu".
Etymology. For example, in "leçon", you would expect a hard C because of the o. The original Latin word was "lectio". There was a stage in French where that cti was soft. Both the t and the i have since dropped out of the spelling, but the language "remembers" that the C was soft and marks that with a cédille.
Takeaway: A cédille can only appear on a C that would otherwise be hard. It's not needed on a C that's already soft.
I am guessing it is not needed because the following e induces a [se] pronunciation naturally. Same for i: ci-devant is fine without cédille. This is not the case with a, o, u, which result in a [ka, ko, ku] pronunciation, so you need a cédille to soften them to an s sound.
Not wanting to take away any credit to the two answers (by Luke Sawczak & Frank), I just felt like mentioning the oft-forgotten ligature œ, which is commonly disregarded even in spellings where it should belong, and replaced with the two letters that form it (oeuf instead of œuf, for instance). Is it ignorance, is it a claim of some sort? I don’t know.
But in the end, this misspelling occasionally creates the presence of an informal o after the c in some words that are to be pronounce [se]:
cœliaque [seliak]: qui concerne les intestins;
cœlacanthe [selakɑ̃t]: a ancient fish, still existing today, though it was once considered extinct for millions of years;
cœlophysis [selofizis]: a type of hunting dinosaur.
It is worth noting, however, that cœur, by a long stretch the most common word starting with ‘cœ’ in French, is the one exception I found, for its C is pronounced [k].
Another ligature, even less common, is ‘æ’, which is also sometimes misspelled as ae, putting again a letter that should induce a hard C in a word where it won’t be:
The case of et cætera ([εtseteʁa]) is somewhat different in the sense that it allows a simpler spelling: et cetera, which is in no contradiction with the usual French rules of pronouncing a C, and also because many Belgians & Quebecois pronounce it [ɛtʃeteʁa], which is a clearly unusual pronunciation of a C (with or without the cédille).