Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
10 / 8 / 2
Регистрация: 01.05.2018
Сообщений: 95
1

Не могу исправить ошибку cannot convert 'int ' to 'const char *'

01.05.2018, 14:51. Показов 1973. Ответов 6
Метки нет (Все метки)

Добрый день! Задание состоит в том, что задав структуру Recipe(рецепт) полям которой есть: название блюда, кол-во ингредиентов, наличие в нем перца и цен, нужно определить самое дорогое блюдо без перца с указанным кол-во ингредиентов с клавиатуры.

В итоге остановился на этом и дальше писать ещё не стал. Компилятор выдает ошибку "cannot convert 'int ' to 'const char *' ".
Помогите, пожалуйста, найти мои ошибки. Так же прикрепляю входные данные с файла тхт.

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
#include<stdio.h>
#include<string.h>
struct Recipe {
    char name[];
    int number;
    char hotPepper;
    float price;
    };
void main () {
    char nPep[]={"NotPeper"};
    FILE *m;
    int num; //желаемое кол-во ингредиентов
    
    int i; 
    
    puts("Enter the number of ingredients:");
    scanf("%i", &num);
    m=fopen("menu.txt", "r");
    if(m==NULL) puts("ERROR OF OPENING");
    else {
        struct Recipe A[4];
        for(i=0;i<4;i++) {
            fscanf(m,"%s",&A[i].name);
            fscanf(m,"%i",&A[i].number);
            fscanf(m,"%s",&A[i].hotPepper);
            fscanf(m,"%f",&A[i].price);
        
        }
         for(i=0;i<4;i++){
        if(((strcmp(A[i].hotPepper,nPep))==0)&&(num==A[i].number)) printf("%s",A[i].name);
 
        }
    }
}
Изображения
 
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2018, 14:51
Ответы с готовыми решениями:

Как исправить ошибку "cannot convert 'char const[1]' to 'int'"?
подскажите на примере как исправить ошибку. Unit1_RightEndDoor.cpp(1485): E2034 Cannot convert...

Исправить ошибку cannot convert parameter 1 from 'const char [15]' to 'LPCWSTR' (CopyFile)
Народ, помогите, не могу разобраться с &quot;CopyFile(LPCTSTR fromName, LPCTSTR toName, BOOL...

Error cannot convert 'int*' to 'const char*'
Сама задача: Описать структуру с именем NOTE, содержащую следующие поля: -фамилия, имя; -номер...

найти ошибку cannot convert *char to int
Здравствуйте! помогите найти ошибку, пожалуйста! вот код, компилятор ругается на преобразование...

6
1561 / 935 / 607
Регистрация: 25.04.2016
Сообщений: 2,610
01.05.2018, 15:32 2
Никогда не цепляйте текст изображением, если только речь не идет об ошибке компилятора...
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
37
#include<stdio.h>
#include<string.h>
struct Recipe {
    char name[16];
    int number;
    char hotPepper[16];
    float price;
    };
void main () {
    char nPep[] = "NotPeper";
    FILE *m;
    int num; //желаемое кол-во ингредиентов
    
    int i; 
    
    puts("Enter the number of ingredients:");
    scanf("%i", &num);
    m=fopen("menu.txt", "r");
    if(m==NULL) puts("ERROR OF OPENING");
    else {
        struct Recipe A[4];
        for(i=0;i<4;i++) {
            fscanf(m,"%s", A[i].name);
            fscanf(m,"%i",&A[i].number);
            fscanf(m,"%s", A[i].hotPepper);
            fscanf(m,"%f",&A[i].price);
        
        }
         for(i=0;i<4;i++){
        if(strcmp(A[i].hotPepper, nPep)==0 && num==A[i].number)
            printf("%s",A[i].name);
 
        }
    }
    /* закрываем файл */
    fclose(m);
}
menu.txt:

FryPepper 6 WithPepper 15
Peperonata 7 NotPeper 8
Basturma 10 WithPepper 9
Shaurma 8 NotPeper 7
1
10 / 8 / 2
Регистрация: 01.05.2018
Сообщений: 95
01.05.2018, 15:39  [ТС] 3
Цитата Сообщение от stake-k26 Посмотреть сообщение
#include<stdio.h>
#include<string.h>
struct Recipe {
* * char name[16];
* * int number;
* * char hotPepper[16];
Спасибо, я не знал, учту. Получается, если мы считываем строку используя спцификатор %s, то нужно писать без амперсанда???
0
1561 / 935 / 607
Регистрация: 25.04.2016
Сообщений: 2,610
01.05.2018, 15:45 4
Цитата Сообщение от bogdaneyziy Посмотреть сообщение
Получается, если мы считываем строку используя спцификатор %s, то нужно писать без амперсанда
амперсанд указывает на то, что берется не значение переменной, а ее адрес в памяти, таким образом &a - это адрес в памяти, где хранится а, однако имя массива уже является указателем, т.е. содержит адрес, по которому хранятся данные, поэтому мы просто передаем имя массива без амперсанда.
1
10 / 8 / 2
Регистрация: 01.05.2018
Сообщений: 95
01.05.2018, 16:41  [ТС] 5
Так-то оно работает.

Добавлено через 3 минуты
Цитата Сообщение от stake-k26 Посмотреть сообщение
амперсанд указывает на то, что берется не значение переменной, а ее адрес в памяти, таким образом &a - это адрес в памяти, где хранится а, однако имя массива уже является указателем, т.е. содержит адрес, по которому хранятся данные, поэтому мы просто передаем имя массива без амперсанда.
А в строках 24 и 26 почему мы его тогда используем?
0
3656 / 2843 / 781
Регистрация: 25.03.2012
Сообщений: 10,417
Записей в блоге: 1
01.05.2018, 16:45 6
Лучший ответ Сообщение было отмечено bogdaneyziy как решение

Решение

Цитата Сообщение от stake-k26 Посмотреть сообщение
амперсанд указывает на то, что берется не значение переменной, а ее адрес в памяти, таким образом &a - это адрес в памяти, где хранится а
в строках 24 и 26 мы берется адрес в памяти
1
1561 / 935 / 607
Регистрация: 25.04.2016
Сообщений: 2,610
01.05.2018, 16:55 7
А вы посмотрите что у вас в структуре и к чему вы обращаетесь в строках 24 и 26.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2018, 16:55

Ошибка: cannot convert 'int (*)[50]' to 'int*' for argument '1' to 'void vvod2m(int*, int*, int*, char)'Х2
Матрицы An1*m1 и Bn2*m2 вводить с клавиатуры (размерности &gt;3, m1=n2). Выполнять через подпрограммы....

Ошибка E2034: Cannot convert 'char const[8]' to 'const wchar_t *'
Прошу прощения за свой вопрос, но я никак не пойму где ошибка? использую c++ builder 10 (если это...

Ошибка: E2034 Cannot convert 'char const[51]' to 'const wchar_t *
Пытаюсь добавить в memo1 название файлов располагающихся в каталоге, в Console Application все...

Ошибка: Cannot convert 'char const[18]' to 'const wchar_t *'
Unit1.cpp(59): E2034 Cannot convert 'char const' to 'const wchar_t *' Full parser context ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru