2015-10-29 3 views
-6

Я пытаюсь передать две локальные переменные в другой блок, но при компиляции моего кода, эта ошибка показывает:Как объявить несколько переменных в Turbo C++

(ошибка 93:) ожидается)

Я использую Borland Turbo C++ 3.0. Я не могу понять, где я ошибаюсь; мог ли кто-нибудь указать мне в правильном направлении?

char create_username(char forename,surname) 
{  
    strcpy(forename); 
    strcpy(surname); 

    strcat(forename,surname); 

    return username; 

} 
+7

«* Turbo C++ 3.0 был выпущен в 1991 году *« почему вы используете такой древний компилятор/среду? –

+0

Это часть моего курса в колледже, который они используют в качестве введения к программированию –

+0

[The Definitive C++ Book Guide and List] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – Drop

ответ

1

Даже Turbo C++ реализовано это в правильный путь несколько десятилетий назад.

Параметры функции должны быть объявлены давая их типы в явном виде:

char create_username(char forename, char surname) 
           // ^^^^ This is needed! 

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

void foo() { 
    char forename, surname; 
} 

Также обратите внимание, что char хранит только один символ, и вы не можете сохранить forename/фамилия.

Тип скорее должен быть std::string.


Как вы разъяснение ваших требований в этом comment

Я пытаюсь сделать имя пользователя путем присоединения, используя первую букву Имени и полную фамилию, ...

ваша функция должна скорее выглядеть следующим образом:

std::string create_username(const std::string& forename, const std::string& surname) {  
    return std::string(forename[0],1) + surname; 
} 
+0

пытаюсь сделать имя пользователя, присоединившись к первой букве имени и полной фамилии, благодаря чему вам очень помогает –

-2

Здесь вы находитесь.

#include <iostream> 
#include <cstring> 

char * create_username(const char *forename, const char *surname) 
{ 
    size_t n = std::strlen(forename) + std::strlen(surname) + 1; 
    char *username = new char [ n + 1]; // one more for the blank between names 

    std::strcpy(username, forename); 
    std::strcat(username, " "); 
    std::strcat(username, surname); 

    return username; 
} 

int main() 
{ 
    const char *forename = "Craig"; 
    const char *surname = "Cheney"; 

    char *username = create_username(forename, surname); 

    std::cout << username << std::endl; 

    delete [] username; 
} 

Выход

Craig Cheney 

Если ваш компилятор не поддерживает пространства имен и новые заголовки C++, то вы можете написать что-то вроде следующего

#include <iostream.h> 
#include <string.h> 

char * create_username(const char *forename, const char *surname) 
{ 
    size_t n = strlen(forename) + strlen(surname) + 1; 
    char *username = new char [ n + 1]; // one more for the blank between names 

    strcpy(username, forename); 
    strcat(username, " "); 
    strcat(username, surname); 

    return username; 
} 

int main() 
{ 
    const char *forename = "Craig"; 
    const char *surname = "Cheney"; 

    char *username = create_username(forename, surname); 

    cout << username << endl; 

    delete [] username; 
} 
-2

Сначала немного дружелюбный совет - вы должны проверить introduction, чтобы понять, как работает этот сайт. Ваш вопрос плохо сформулирован, и он скорее всего будет закрыт и удален как неконструктивный, если вы не отредактируете и не исправите его, чтобы он соответствовал правилам сайта. Если вы не можете писать правильные вопросы на правильном английском языке, вам будет трудно найти помощь.

Во-вторых, у вас много ошибок в коде, которые показывают, что вы не понимаете базовые понятия языка C/C++, а также что вы не потрудились проверить синтаксис языка C/C++. Просто сделав Google search для имен функций, которые вы хотите использовать, показал бы, как их правильно вызвать - вот пример для strcpy().

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

0

Буквально все неправильно.

char create_username(char forename,surname) 

Это возвращает символ? И forename и surname являются персонажами? Это не так.

strcpy(forename); 

Поскольку forename является символом, а не строка, она не может быть передана strcpy. Но также - скопировать туда, где?

strcat(forename,surname); 

Почему вы сделали копию forename и surname если вы только собираетесь передать оригинальные из них в какой-то другой функции? И как вы думаете, что это делает? Считаете ли вы, что он объединяет имя и фамилию на ... что?

return username; 

Откуда: username?