Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 10
1

синтаксическая ошибка: ]

11.10.2017, 16:43. Показов 534. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "stdafx.h"
#include <cstring>    
char *strcpy(char *s1, char *s2)
{
    int i = 0;
    while (s2[i] != '\0')
    {
        s1[i] = s2[i];
        i++;
    }
    s1[i] = '\0';
    return s1;
}
int main()
{
    printf("Test 1: ");
    char a[] = "Hello";
    printf(""%s" ",a);
    char b[10] = " ";
    printf(""%s" ",b);
    strcpy(b, a);
    printf(""%s" ",b);
    printf("Test 2: ");
    a[] = "Hello";
    printf(""%s" ", a);
    b[] = "Hi ";
    printf(""%s" ", b);
    strcpy(b, a);
    printf(""%s" ", b);
}
В строках
C
1
2
a[] = "Hello";
b[] = "Hi ";
пишет
синтаксическая ошибка: ]
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2017, 16:43
Ответы с готовыми решениями:

Синтаксическая ошибка в объявлении функции
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;locale.h&gt; #include &lt;Windows.h&gt; struct...

Синтаксическая ошибка перед знаком >
Отрывок кода. Компилятор выдает, что синтаксическая ошибка перед знаком &gt; (больше). Проверил все...

Error C2061: синтаксическая ошибка: идентификатор
Ошибка в функции Metod в цикле do/while не знаю как устранить синтаксическую ошибку ...

Ошибка в 3 строчках: Синтаксическая ошибка: отсутствие ";" перед "тип"
Вот написал я: #include &quot;locale.h&quot; int main() { setlocale(LC_ALL, &quot;&quot;); char *str =...

8
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
11.10.2017, 17:00 2
Нельзя сишным массивам присваивать значение.
Используйте strcpy, как это делали в 28 строке.
0
0 / 0 / 0
Регистрация: 27.09.2017
Сообщений: 10
11.10.2017, 17:03  [ТС] 3
Мне нужно проверить работу функции strcpy при различных a и b, как мне это реализовать?
P.S. В 17 и 19 строке значения спокойно присваиваются
0
Kukstyler
11.10.2017, 17:29
  #4

Не по теме:

Цитата Сообщение от MrGluck Посмотреть сообщение
Нельзя сишным массивам присваивать значение.
Интересно, почему до сих пор это так? Вряд ли это очень сложно добавить.

0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
11.10.2017, 18:10 5
Цитата Сообщение от Kukstyler Посмотреть сообщение
Интересно, почему до сих пор это так? Вряд ли это очень сложно добавить.
В С++ это сделали с помощью std::array. А сишников итак всё устраивает.

Добавлено через 58 секунд
Цитата Сообщение от EvilZone111 Посмотреть сообщение
В 17 и 19 строке значения спокойно присваиваются
Потому что это инициализация массива. Если хотите далее в него значения записывать, то либо используйте strcpy, либо записывайте данные в конкретные элементы массива.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,713
11.10.2017, 18:12 6
И еще объявлять все переменные надо вначале.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
char *strcpy(char *s1, char *s2)
{
    int i = 0;
    while (s2[i] != '\0')
    {
        s1[i] = s2[i];
        i++;
    }
    s1[i] = '\0';
    return s1;
}
int main()
{
    char a[] = "Hello";
    char b[10] = " ";
    printf("Test 1: ");
    printf("%s ",a);
    printf("%s ",b);
    strcpy(b, a);
    printf("%s ",b);
}
0
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
11.10.2017, 18:14 7
Цитата Сообщение от MrGluck Посмотреть сообщение
А сишников итак всё устраивает.
Возможно. Но согласитесь, использовать функцию для присваивания значения, на сегодняшний день, не самая элегантная/удобная/красивая форма. ЯП же эволюционируют. Почему не упростить данное действие? Хотя, если всех всё устраивает...
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
12.10.2017, 10:45 8
Цитата Сообщение от Kukstyler Посмотреть сообщение
Почему не упростить данное действие?
Потому что под нутром массива указатели и ваше предложение приведёт к большим переделкам ради небольшого "сахарка". В С++ таких проблем нет, а в Си это не поймут. Да и новые стандарты Си почему то не в таком почёте у сообщества. Многих устраивает С89(90).
1
3881 / 2479 / 418
Регистрация: 09.09.2017
Сообщений: 10,888
12.10.2017, 11:14 9
C
1
2
3
4
int arr[10];
int *p1 = arr;
int *p2;
p2 = p1;
Это копирование массива или указателя?
Цитата Сообщение от MrGluck Посмотреть сообщение
Да и новые стандарты Си почему то не в таком почёте у сообщества. Многих устраивает С89(90).
Совместимость со старым кодом и старыми компиляторами, переносимость по большей части.
0
12.10.2017, 11:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2017, 11:14
Помогаю со студенческими работами здесь

Error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "A"
пишет: (20): error C2146: синтаксическая ошибка: отсутствие &quot;;&quot; перед идентификатором &quot;A&quot; (27):...

Синтаксическая ошибка (Lex, Yacc)
Доброго времени суток. Пишу калькулятор при помощи Lex/Yacc. Сам счет происходит правильно, но...

Синтаксическая ошибка: отсутствие "; " перед "тип"
подскажите в настройке visual studio 2008 #include &lt;stdio.h&gt; #define SIZE 10 int* getMaxMin(int...

Синтаксическая ошибка: отсутствие ";" перед "тип"
Всем привет. Почему когда создаю переменную после scanf дает error. А если объявлять 'aaa' верху...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru