С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 1
Регистрация: 12.08.2016
Сообщений: 239
1

Ошибка в программе дешифрования: "выражение должно иметь тип указателя на объект"

12.08.2016, 13:18. Показов 1926. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возникают ошибки : 5 IntelliSense: выражение должно иметь тип указателя на объект c:\Users\Maks\Documents\Visual Studio 2013\Projects\ConsoleApplication4\ConsoleApplication4\Исходный код.cpp 30 22 ConsoleApplication4
6 IntelliSense: аргумент типа "char" несовместим с параметром типа "const char *" c:\Users\Maks\Documents\Visual Studio 2013\Projects\ConsoleApplication4\ConsoleApplication4\Исходный код.cpp 30 31 ConsoleApplication4
программа
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
31
32
33
34
35
36
#include <stdio.h> 
#include <stdlib.h> 
#include <locale.h> 
#include <ctype.h> 
#include <string.h> 
int main(){
    setlocale(LC_ALL, "Russian");
    FILE *S, *T, *K;
    int n = 0;
    const int y = 10;
    char key[y];
    char p;
    K = fopen("C:\\Users\\Maks\\Desktop\\klych.txt", "r");//текст с ключом
    T = fopen("C:\\Users\\Maks\\Desktop\\Output.bin", "rb"); //зашифрованый текст
    S = fopen("C:\\Users\\Maks\\Desktop\\Desifr.txt", "w");// расшифрованый текст 
    if (S == NULL || T == NULL || K == NULL){
        printf("Файл не найден или не создан\n");
        exit(0);
    }
    while (feof(K) == NULL){
        if (key[y] == '\n'){
            key[y] = fgetc(K);
        }
    }
    while (feof(T) == NULL){
        p = fgetc(T);
        if (feof(T) != NULL)
            break;
        else{
            fputc(p ^ (key[y][n%strlen(key[y])]), S);// декодирование текста 
            n++;
        }
    }
    fcloseall();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2016, 13:18
Ответы с готовыми решениями:

Ошибка! выражение должно иметь тип указателя на объект
Строка 41 ошибка #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; #include...

Ошибка выражение должно иметь тип указателя на объект
Как устранить проблему? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdlib.h&gt;...

Ошибка № Е0142 Выражение должно иметь тип указателя на объект
Наткнулся на проблему при написании программы. Не знаю как решить #include &quot;stdafx.h&quot; #include...

Ошибка № Е0142 Выражение должно иметь тип указателя на объект
Добрый день, господа. Объясните пожалуйста в чем ошибка. Нужна функция программы которая свичом...

11
Заблокирован
12.08.2016, 13:30 2
Цитата Сообщение от Maksssssss Посмотреть сообщение
key[y][
key двумерный массив?
0
0 / 0 / 1
Регистрация: 12.08.2016
Сообщений: 239
12.08.2016, 13:33  [ТС] 3
нет
0
2337 / 1824 / 753
Регистрация: 27.07.2012
Сообщений: 5,398
12.08.2016, 13:37 4
deleted
0
58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 346
12.08.2016, 13:39 5
Выше указали и я добавлю ещё.

Допиши перед main using namespace std ещё.
0
2337 / 1824 / 753
Регистрация: 27.07.2012
Сообщений: 5,398
12.08.2016, 13:42 6
Цитата Сообщение от redseven Посмотреть сообщение
Допиши перед main using namespace std ещё.
Зачем? Он не использует ничего из пространства имён std.

Добавлено через 1 минуту
key[y][n%strlen(key[y])]
1. key - одномерный массив, а обращаешься как к двумерному.
2. strlen принимает на вход строку символов, заканчивающихся нулём, а не отдельный символ.
0
0 / 0 / 1
Регистрация: 12.08.2016
Сообщений: 239
12.08.2016, 13:54  [ТС] 7
первоначально оно было так :key[y][n%strlen(key[y])] , но там возникает ошибка , что нужна константа для key , вот я её и сделал

Добавлено через 8 минут
ошибки : 6 IntelliSense: аргумент типа "char" несовместим с параметром типа "const char *" c:\Users\Maks\Documents\Visual Studio 2013\Projects\ConsoleApplication4\ConsoleApplication4\Исходный код.cpp 28 33 ConsoleApplication4
5 IntelliSense: выражение должно иметь тип указателя на объект c:\Users\Maks\Documents\Visual Studio 2013\Projects\ConsoleApplication4\ConsoleApplication4\Исходный код.cpp 28 24 ConsoleApplication4
0
2337 / 1824 / 753
Регистрация: 27.07.2012
Сообщений: 5,398
12.08.2016, 14:12 8
Смотрю я на код и понимаю, что ошибки компиляции тут дело десятое. Что вообще программа делает?

C++
1
2
3
4
5
6
7
8
9
10
    const int y = 10;
    char key[y];
 
    K = fopen("C:\\Users\\Maks\\Desktop\\klych.txt", "r");//текст с ключом
 
    while (feof(K) == NULL){
        if (key[y] == '\n'){ // <-- обращение к элементу за концом массива.
            key[y] = fgetc(K); // <-- тоже самое
        }
    }
0
0 / 0 / 1
Регистрация: 12.08.2016
Сообщений: 239
12.08.2016, 14:15  [ТС] 9
открывает файл и считывает с него все до перехода на другую строку
0
2337 / 1824 / 753
Регистрация: 27.07.2012
Сообщений: 5,398
12.08.2016, 14:19 10
Цитата Сообщение от Maksssssss Посмотреть сообщение
открывает файл и считывает с него все до перехода на другую строку

C++
1
2
3
4
5
6
7
8
9
    bool end = false;
    int i = 0;
    while (!feof(K) && !end) {
        char c = fgetc(K);
        if (c != '\n') {
            key[i++] = c;
        } else
            end = true;
    }
0
0 / 0 / 1
Регистрация: 12.08.2016
Сообщений: 239
12.08.2016, 14:22  [ТС] 11
ошибка которая меня волнует больше всего - 7 IntelliSense: аргумент типа "char" несовместим с параметром типа "const char *" c:\Users\Maks\Documents\Visual Studio 2013\Projects\ConsoleApplication4\ConsoleApplication4\Исходный код.cpp 30 33 ConsoleApplication4

Добавлено через 20 секунд
как с ней бороться ?
0
2337 / 1824 / 753
Регистрация: 27.07.2012
Сообщений: 5,398
12.08.2016, 14:30 12
Цитата Сообщение от Maksssssss Посмотреть сообщение
как с ней бороться ?
Уже писал:
Цитата Сообщение от John Prick Посмотреть сообщение
2. strlen принимает на вход строку символов, заканчивающихся нулём, а не отдельный символ.
Так как я не знаю, что там должно быть по логике программы, то и сказать, как бороться, пока не могу.

Добавлено через 1 минуту
strlen(key[y]): key[y] имеет тип char, а strlen принимает const char*, т.е. строку.
0
12.08.2016, 14:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2016, 14:30
Помогаю со студенческими работами здесь

Выражение должно иметь тип указателя на объект
Не могу понять где я ошибся, на j ругается. // lalaba3.cpp: определяет точку входа для...

Выражение должно иметь тип указателя на объект
Нужно поменять строки массива местами, только вот компилятор ругается на temt - выражение должно...

Выражение должно иметь тип указателя на объект
Вроде все правильно на компилятор ругается на функции fill_b и show_b подскажите в чем проблема ...

9 строка. выражение должно иметь тип указателя на объект
#include &quot;pch.h&quot; #include &lt;iostream&gt; using namespace std; const int razm = 100; void z0(int...

Ошибка: "выражение должно иметь тип указателя на объект"
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;locale.h&gt; #define N 10 using namespace std;...

9 строка. выражение должно иметь тип указателя на объект. как исправить?
#include &quot;pch.h&quot; #include &lt;iostream&gt; using namespace std; const int razm = 100; void z0(int...


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

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