Member 14018003 Ответов: 3

Что не хватает завершающего " вредный характер?


Я пытаюсь запустить эту программу и постоянно получаю одни и те же ошибки. Что означает отсутствие завершающего символа и как я могу исправить эти проблемы в своем коде? Для меня все прекрасно работает на Repl. Я скопировал и вставил в Linux, и теперь у меня есть все эти ошибки.

RPS.c:162:10: предупреждение: отсутствует завершающий символ"
РПС.C: в функции âprintResultsâ:
RPS.c:162: ошибка: отсутствует завершающий символ"
РПС.ч:163: ошибка: ожидается выражение перед ' % * маркер
RPS.c:163:9: предупреждение: отсутствует завершающий символ"
RPS.c:163: ошибка: отсутствует завершающий символ"
РПС.с:164: ошибка: ожидается'; прежде чем â â}â маркер



код:

/*
    * Description: Game of Rock, Paper, Scissors with the Computer.
    *
    * Author: Cole 
    *
    * Date: 10-12-2018
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    //FUNCTION DECLARATIONS
    /*Function Name: flushscanf
    Input Parameters: c
    Description: Used after scanf. Prevents scanf from messing up, and EOF is used so it isn't read after the end of the file.
    Return Values: void
    */
    void flushScanf(void);
    
    /*Function name: compareInputs
    Input parameters: userInput
    Description: Determines whether user input is acceptable to run the program. Makes upper and lower case r, p, s, and q acceptable inputs.
    Return Values: Results, error statement, or rock/paper/scissors.
    */
    int compareInputs(char);
    
    /*Function name: getInput
    Input parameters: The userInput.
    Description: Tallies the wins for the computer and user, as well as the ties.
    Return Values: myWins++, pcWins++, or ties++.
    */
    char getInput();
    
    /*Function name: printResults
    Input parameters: int myWins, int pcWins, and int ties.
    Description: Prints the tallied wins and ties.
    Return Values: printf statement with correct record of results from games played.
    */
    void printResults(int, int, int);
    
    
    int main(void) {
    //variables
    char userInput;
    int flag=1;
    int myWins= 0;
    int pcWins= 0;
    int ties= 0;
    int result;
    
    printf("Let’s play a game of Rock/Paper/Scissors \n");
    
    //
    do{
      userInput = getInput();
      if(userInput == 'Q' || userInput == 'q') {
        printResults(myWins, pcWins, ties);
        printf("\nThank you for playing!");
        flag =0;
        }else if(userInput == 'R' || userInput == 'r'){
        userInput = 'r';
        }else if(userInput == 'P' || userInput == 'p'){
        userInput = 'p';
        }else if(userInput == 'S' || userInput == 's'){
        userInput = 's';
        }else{
          printf("Error, Please try again\n ");
        }
    
        result = compareInputs(userInput);
    
        switch(result){
          case 1:
            myWins++;
            break;
    
            case 2:
            pcWins++;
            break;
    
            case 3:
            ties++;
            break;
        }
    }while(flag==1);
    
    
    
    
    
      return 0;
    
      
    }
    char getInput(void){
      char userInput;
      printf("\nEnter R, P, S, or Q (for quit):");
      scanf("%c", &userInput);
      flushScanf();
    
     
      return userInput;
    }
    
    char check(char input){
    
    }
    
    int compareInputs(char userInput){
    srand(time(NULL));
    
    int pc = (rand()%3)+1;
    // 1 = Rock
    // 2 = Paper
    // 3 = Scissors
    if (pc==1 && userInput == 'r'){
      printf("You picked Rock, the computer picked Rock.\n");
      printf("It's a tie.\n");
      return 3;
    } else if(pc==1 && userInput == 's'){
      printf("You picked Scissors, the computer picked Rock.\n");
      printf("Rock breaks Scissors, you lose!\n");
      return 2;
      }else if(pc==1 && userInput == 'p'){
        printf("You picked Paper, the computer picked Rock.\n");
        printf("Paper covers rock, you win!\n");
        return 1;
      }else if (pc==2 && userInput == 'r'){
        printf("You picked Rock, the computer picked Paper.\n");
        printf("Paper covers rock, you lose.\n");
        return 2;
      } else if (pc==2 && userInput == 's'){
        printf("You picked Scissors, the computer picked Paper.\n");
        printf("Scissors cuts Paper, you win!\n");
        return 1;
      } else if (pc==2 && userInput == 'p'){
        printf("You picked Paper, the computer picked Paper.\n");
        printf("It's a tie.\n");
        return 3;
      } else if (pc==3 && userInput == 'r') {
        printf("You picked Rock, the computer picked Scissors.\n");
        printf("Rock breaks Scissors, you win!\n");
        return 1;
      } else if (pc==3 && userInput =='s'){
        printf("You picked Scissors, the computer picked Scissors.\n");
        printf("It's a tie\n");
        return 3;
      }  else if (pc==3 && userInput == 'p'){
      printf("You picked Paper, the computer picked Scissors.\n");
      printf("Scissors cuts paper, You lose!\n");
      return 2;
      }
      return 4;
    }
    
    void printResults(int myWins, int pcWins, int ties){
      printf("\nYou won %d times, the computer won %d times, and it was a tie %d times", myWins, pcWins, ties);
    }
    
    void flushScanf(void) {
      char c = getchar();
    
      while (c != '\n' && c != EOF) {
        c = getchar();
        }
      }


Что я уже пробовал:

Перепечатанные цитаты и другие знаки препинания в случае, если это связано с тем, что редактор использует другую систему символов.

Rick York

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

3 Ответов

Рейтинг:
2

KarstenK

Это сообщения об ошибках от компилятора, который сообщает вам строку и причину ошибки. Ваша ошибка звучит так, как будто вы пропустили окончание строки.

//your code
char *text = "Hello world;
//correct code
char *text = "Hello world";
Небольшая разница для вас но большая разница для компилятора ;-)

совет: при множественных ошибках первая является важной ошибкой. Это может вызвать другие, как карточный домик.


CPallini

На самом деле

const char * text = "Hello world";

это был бы правильный код. :-D
Мой 5.

Рейтинг:
2

Member 14825814

BONJOUR LES AMIS?
je viens de débuter avec arduino uno et un afficheur 16*2 (1602A).
Заземление заземление верс
VCC vers 5v
АСД вэрс А4
SCL vers A5

l'adresse est 0x27 (3 bornes à 0)

л идет отсчет годов-начиная есть allumé Эт когда Джей'envoi-де-ла-словарь "Здравствуй, мир" номинальной défaut дю программы:

#включить <wire.h>
#include <liquidcrystal_i2c.h>// установите жидкокристаллический адрес на 0x27 для 16 символов и 2-строчного дисплея
Жидкокристаллический дисплей liquidcrystal_i2c(0x27, 16, 2);

недействительными установки()
{
// инициализация жидкокристаллического дисплея
ЖК.начать();

// Включите blacklight и распечатайте сообщение.
ЖК.подсветка();
lcd.print("Привет, мир!");
}

пустая петля()
{
/- Ничего здесь не делай...
}

j'AI passé des heures à regarder des tutos et les suivre à la lettre et toujours rien !!!
j'AI désinstaller plusieurs fois arduino mais au final toujours la meme erreur

erreur: нет соответствующей функции для вызова 'LiquidCrystal_I2C::begin

Мерси д'заранее-де-помощник вотре


Dave Kreskowiak

Во-первых, это англоязычный сайт.

Во-вторых, вы разместили свой вопрос как ответ на совершенно не связанный с ним вопрос, который был задан 2 года назад.

Откройте свой собственный вопрос, перейдя в меню "быстрые ответы" выше и нажав кнопку "Задать вопрос".

Рейтинг:
0

OriginalGriff

Цитата:
Перепечатанные цитаты и другие знаки препинания в случае, если это связано с тем, что редактор использует другую систему символов.
И это означает, что мы не можем исправить это для вас, потому что это устранило проблему. Почти наверняка один из ваших символов двойной кавычки либо отсутствует, либо вы набрали вместо него одинарную кавычку: но код, который вы показываете, не дает ошибки, которую вы описываете при копировании и вставке сюда, поэтому вы уже удалили проблему!

Однако это дает еще одну ошибку: check функция ничего не делает и не возвращает значения.