Вопрос о символьных операциях со строками в C

#arrays #c #string

Вопрос:

Хорошо, у меня есть код:

 #include lt;stdio.hgt; #include lt;string.hgt; #include lt;ctype.hgt;  int count_characters(char str[]){ /* Your Code Here */ }  int count_words(char str[]){ /* Your Code Here */ }  void capitalize(char str[]){ /* Your Code Here */ }  void invert_capitalization(char str[]){ /* Your Code Here */ }  int main(){  char S1[] = "Raspberry"; char S2[] = " "; //Contains 0 words, 6 characters char S3[] = "CSc 111 FaLL 2021"; char S4[] = " raspberry pear pineapple banana"; char S5[] = " lt;-- spaces at the beginning, spaces at the end --gt;  ";  //Make a new array (initialized to an empty string) to use as temporary storage. char W[1000] = "";  printf("S1: "%s"n", S1 ); printf("Characters: %dn", count_characters(S1) ); printf("Words: %dn", count_words(S1) ); strcpy(W, S1); capitalize(W); printf("Capitalized: "%s"n", W ); strcpy(W, S1); invert_capitalization(W); printf("Inverted Capitalization: "%s"n", W ); printf("n");  printf("S2: "%s"n", S2 ); printf("Characters: %dn", count_characters(S2) ); printf("Words: %dn", count_words(S2) ); strcpy(W, S2); capitalize(W); printf("Capitalized: "%s"n", W ); strcpy(W, S2); invert_capitalization(W); printf("Inverted Capitalization: "%s"n", W ); printf("n");  printf("S3: "%s"n", S3); printf("Characters: %dn", count_characters(S3) ); printf("Words: %dn", count_words(S3) ); strcpy(W, S3); capitalize(W); printf("Capitalized: "%s"n", W ); strcpy(W, S3); invert_capitalization(W); printf("Inverted Capitalization: "%s"n", W ); printf("n");  printf("S4: "%s"n", S4 ); printf("Characters: %dn", count_characters(S4) ); printf("Words: %dn", count_words(S4) ); strcpy(W, S4); capitalize(W); printf("Capitalized: "%s"n", W ); strcpy(W, S4); invert_capitalization(W); printf("Inverted Capitalization: "%s"n", W ); printf("n");  printf("S5: "%s"n", S5 ); printf("Characters: %dn", count_characters(S5) ); printf("Words: %dn", count_words(S5) ); strcpy(W, S5); capitalize(W); printf("Capitalized: "%s"n", W ); strcpy(W, S5); invert_capitalization(W); printf("Inverted Capitalization: "%s"n", W ); printf("n");  return 0; }  

с выходом

 S1: "Raspberry" Characters: 9 Words: 1 Capitalized: "Raspberry" Inverted Capitalization: "rASPBERRY"  S2: " " Characters: 6 Words: 0 Capitalized: " " Inverted Capitalization: " "  S3: "CSc 111 FaLL 2021" Characters: 17 Words: 4 Capitalized: "CSc 111 FaLL 2021" Inverted Capitalization: "csC 111 fAll 2021"  S4: " raspberry pear pineapple banana" Characters: 34 Words: 4 Capitalized: " Raspberry Pear Pineapple Banana" Inverted Capitalization: " RASPBERRY PEAR PINEAPPLE BANANA"  S5: " lt;-- spaces at the beginning, spaces at the end --gt; " Characters: 54 Words: 10 Capitalized: " lt;-- Spaces At The Beginning, Spaces At The End -   -gt; " Inverted Capitalization: " lt;-- SPACES AT THE BEGINNING, SPACES  AT THE END --gt; "  

Я был смущен этим уроком, но учитель не предложил решения для этого, и я хотел спросить кого-нибудь, как мне это сделать? И если да, не мог бы кто-нибудь показать, что должно быть внутри /* Вашего кода Здесь */. Обратите внимание, что это не домашнее задание, это учебник, с которым у меня возникают проблемы

Комментарии:

1. Прямо сейчас ваша функция не имеет особого смысла. Любопытно, как ты думаешь count_characters(S1) , что бы это сделало. Попробуйте создать переменную перед циклом for, возможно, с именем counter , и инициализировать ее до 0. Затем замените всю внутреннюю часть цикла for counter; на, а затем верните эту переменную после цикла.

2. @RetiredNinja для цикла также интересно.

3. @0___________ Да, заметил это после того, как увидел твой ответ. Запятые-это как 2/3 точки с запятой, не так ли? 🙂

Ответ №1:

 count_characters(S1)    

не имеет смысла на языке Си. Я даже не знаю, что вы хотели с ним заархивировать.

 size_t count_characters(char str[]) {  size_t len;  for (len = 0; str[len] != ''; len  ){}  return len; }  int main(void) {  printf("%zun", count_characters("123456")); }  

Но, как я вижу, вы не знаете даже основ языка Си (для цикла также недопустимо). Я бы посоветовал вам прочитать книгу на языке Си и изучить некоторые базовые вещи, прежде чем пытаться что-либо программировать.