Ошибка компилятора в C, ошибка: ожидаемое выражение - PullRequest
0 голосов
/ 20 июня 2020

Я столкнулся с проблемой, которую действительно не знаю, как исправить. Я в основном кодирую Python, и это моя первая программа в C.

#include <stdio.h>

int ask(void) {
  scanf("Var");
  return 0;
}

int count(ask) {
  scanf("number1");
  return 0;
}

int main(void) {
  printf("This is my first program!\n");
  printf("I hope this program turns out well.");
  printf("I don't really know what to do, but i think im progressing.\n");
  printf("But yeah, This is my first program.\n");
  printf("Type an Number");
  ask();
  count(ask());
  printf("Thanks!");
  printf(%count%);
  return 0;
}

Однако я продолжаю получать сообщение об ошибке.

main.c:22:10: error: expected expression
  printf(%count%);
         ^
main.c:22:17: error: expected expression
  printf(%count%);
                ^
2 errors generated.
compiler exit status 1

Что я хочу do, пользователь вводит число, а затем выводит это число. Но это еще не все. Я хочу, чтобы он писал цифры 1 - пользователь вводит, и когда он получает номер правильно, он печатает «Ваш номер:» (число)

Ответы [ 4 ]

1 голос
/ 20 июня 2020

Проблема (как уже указывалось) в том, что вы на самом деле не получаете и не сохраняете значение из вызова scanf (). Кроме того, printf(%count%) недопустимый синтаксис C. Вам нужно использовать printf("%d", count).

Собираем все это вместе:

#include <stdio.h>

int ask(void) {
  int input_number;
  scanf("%d", &input_number);
  getchar();  # This is so that the '\n' in is read when you hit Enter
  return input_number;
}

int main(void) {
  printf("This is my first program!\n");
  printf("I hope this program turns out well.");
  printf("I don't really know what to do, but i think im progressing.\n");
  printf("But yeah, This is my first program.\n");
  printf("Type an Number");
  int input_number = ask();
  printf("Thanks!");
  printf("The number you entered is %d\n", input_number);
  return 0;
}

Некоторые вещи, которые нужно прочитать, чтобы избежать ошибок, подобных этим:

printf учебник: https://www.tutorialspoint.com/c_standard_library/c_function_printf.htm

scanf учебник: https://www.tutorialspoint.com/c_standard_library/c_function_scanf.htm

0 голосов
/ 20 июня 2020

В C мы используем % для указания типа вывода / ввода. % d для целого числа,% f для числа с плавающей запятой,% c для символа,% s для строки и это ваши основные c знания.

для printf:

printf("%d", varname);

для scanf:

scanf("%d", &varname);

'&' означает расположение в памяти.

В вашей программе много синтаксических ошибок, вот код:

#include<stdio.h>

int ask(){
    
    int varin;
    
    scanf("%d", &varin);
    return (varin);
}

int count(int countin){
    return (countin);   //just an example code, or whatever you wanna do here.
}

int main(){
    
    int out;
    
    printf("Whatever\n");
    out = ask();
    count(out);
    printf("%d", out);
    
    return 0;
}
0 голосов
/ 20 июня 2020

Вы используете неправильный формат для печати. вы используете этот код printf(%count%); вместо этого вы должны использовать этот код printf("%d",count(variablename));

Вот код, который вы можете использовать:

#include <stdio.h>

 int ask(void) {
    //scanf("Var");
    int var; //declaring integer type varible in C
    scanf("%d",&var);  //taking input

    return var; //returning what is being input by user
 }

//int count(ask) //its function you are passing
//so it should have parenthesis
int count( int a ) 
{

      return a;

 }

  int main(void) {
   printf("This is my first program!\n");
   printf("I hope this program turns out well.");
   printf("I don't really know what to do, but i think im progressing.\n");
   printf("But yeah, This is my first program.\n");
   printf("Type an Number: ");

           //ask();   
    count(ask()); // when you will call it will automatically run ask as well 
           // and it will pass int value that user will input 
    printf("Thanks!");
    int var1=ask();   // this varible var1 will store value returned by ask() 
    printf("%d",count(var1) );  //this will print that value

                 //I dont know what you wanted to do here
                 //maybe you wanted to print value returned by count function
                 //so it can be done by this
   return 0;
}

формат printf: printf("%formatspecifier",variable name); Спецификаторы формата %d для целого числа. %f для плавающего значения. %c для фургона. s для строки и т. Д.

0 голосов
/ 20 июня 2020

Используйте printf("%d", count);, чтобы напечатать счетчик. % d используется, чтобы указать, что мы печатаем что-то с целочисленным типом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...