5.3. почему ошибка компиляции происходит как указатель *

#c #pointers #compiler-errors

#c #указатели #ошибки компилятора

Вопрос:

Я хочу создать программу, которая объединяет несколько слов, введенных с клавиатуры, в одну строку. Однако я получаю ошибку компиляции. Содержимое программы.

  1. Количество вводимых слов установлено равным 4 в макросе NUM.

  2. Длина вводимого слова должна составлять не более 20 символов (включая нулевые символы). Для ввода используется двумерный массив символов.

  3. Переменная для новой строки представляет собой одномерный массив символов типа newstr .

  4. Соедините введенные слова, чтобы создать новую строку newstr с пробелом между словами.

  5. Вставьте один период в конце строки newstr (без пробела; см. Пример выполнения).

  6. Распечатайте созданный newstr целиком с помощью printf . В это время не вставляйте пробелы или точки в printf. Наконец, отображается количество символов newstr (включая пробел), и процесс завершается (см. Пример выполнения).

  7. Вы можете использовать функции strcpy и strlen . Функция strcpy — это функция, которая копирует строку символов, указанную во втором аргументе, после адреса, указанного в первом аргументе. Функция strlen — это функция, которая возвращает длину символьной строки (не включая нулевые символы). При его использовании сначала включите string.h .

Источник

 #include <stdio.h>
#include<stdlib.h>
#include<string.h>

#define NUM 4

int main ()
{
   char str2 [NUM] [20]; / * Character array for input * /
   char newstr [100]; / * Character array for output * /
   int i;


   printf ("Input% d words:  n", NUM);

   for (i = 0; i <NUM; i   ) {
     printf ("% s", str2 [i]); / * Print original string * /
   }

   for (i = 0; i <NUM; i   ) {

     strcpy (newstr [i], str [i]);
     if ('A' <= str2 [i] [0] amp;amp; str2 [i] [0] <='Z')
      newstr [i] [0] = str2 [i] [0]   32;
     // else break;
     printf ("% s  n", newstr [i]);

   }

   // newstr [i] = * prefix   str [i];



   // for (i = 0; i <NUM; i   ) {
   // printf ("% s  n", newstr [i]); / * Display newly created string * /
   //}

   return 0;
}...
  

Ошибка

Ошибка

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

1. На первый взгляд: — strcpy() определен в string.h, поэтому включите это.

2. Предупреждения и ошибки довольно просты. Почему бы вам не решить это один за другим?

3. Пожалуйста, укажите описательный заголовок и добавьте соответствующую информацию в тело. Ваша нумерация 5.3 не имеет смысла ни для кого, кроме вас. Также описание вашей задачи не имеет значения, поскольку ошибка компилятора не заботится о цели или вашей программе. Ограничение соответствующей информации привлечет больше читателей, поскольку им не нужно пробираться через страницу текста, чтобы узнать, что это вообще не связано с вашей ошибкой.

4. Я редактирую исходный код. Посмотрите на это!

Ответ №1:

Не могу просто написать комментарий, потому что недостаточно репутации, но в вашей ошибке компилятора указано включить <string.h> . Надеюсь, это все, что вам нужно.

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

1. В OP тоже есть некоторые орфографические ошибки, ошибки вполне понятны.

2. Ошибки компилятора говорят немного больше, чем только это.