ошибки LNK2001 LNK1120

195
29 апреля 2018, 21:32

Не могу даже попробовать запустить программу, так как появляется следующее сообщение об ошибках:


В программировании новичок, понимаю, что использую и с, и с++ в коде, но все же как исправить ошибку?

//дана строка символов состоящая из цифр разделенных пробелами 
//вывести на экран числа этой строки в порядке возрастания их значений
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
char str[];
int s=0;
int *arr;
char *context=NULL;
void main()
{
    cout << "Please input the size of a string +1\n";
    cin >> s;
    cout << "Please input a string of numbers which are divided by spaces\n";
    cin >> str[s];
    arr = new int[s];
    arr[0] = atoi(strtok_s(str, " ",&context));
    for (int i = 1; i < s; i++)
    {
        while (str != '\0')
        {
            arr[i] = atoi(strtok_s(__noop," ", &context));
        }
    }
    for (int i = 0; i < s; i++)
    {
        cout << arr[i] << endl;
    }
    return;
}
Answer 1
cin >> s;

Считано целое число.

cout << "Please input a string of numbers which are divided by spaces\n";
cin >> str[s];

Даже если объявить str с каким-то размером - типа char str[200] - что получается? Мы читаем 1 (прописью - ОДИН) символ в s-й элемент массива. И с чем вы хотите работать?

Но даже если вы исправите на

cin >> str;

то это приведет к чтению в str 1 (опять прописью - ОДНОГО) слова, но никак не строки чисел, разделенной пробелами...

Не знаю ваш ограничения (чем можно пользоваться), но вот один из вариантов решения.

Answer 2
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
int main() {
    char str[100];
    char *ptr = nullptr;
    int arr[100], counter = 0;
    // ВВОД СТРОКИ
    std::cin.getline(str, 100);
    // РАЗБИВАЕМ СТРОКУ НА ТОКЕНЫ
    for (ptr = strtok(str, " ,.-"); ptr != nullptr;
         ptr = strtok(nullptr, " ,.-"))
    {
        // ТОКЕН ПЫТАЕМСЯ ПРЕОБРАЗОВАТЬ В ЧИСЛО
        // ЕСЛИ ПРЕОБРАЗОВАНИЕ УСПЕШНО, ЗАНОСИМ ПОЛУЧЕННОЕ ЧИСЛО В МАССИВ
        int conVAlue = strtol(ptr, nullptr, 10);
        if (conVAlue)
        {
            arr[counter] = conVAlue;
            counter++;
        }
    }
    // СОРТИРОВКА МАССИВА ЧИСЕЛ
    std::sort(arr, arr + counter);
    // ВЫВОД
    for (int i = 0; i < counter; i++)
        std::cout << arr[i] << std::endl;
}

ввод:
qqqwww 222 33333 ddddd 4
вывод:
4 222 33333

READ ALSO
Отследить клик на div

Отследить клик на div

Есть разметка с предметами

176
Как читать записывающийся файл?

Как читать записывающийся файл?

Эксперементирую с проектом по стримингу видеоПишу поток IPTV в mp4 на диск средствами ffmpeg

184
Плагины и массивы Gulp@next?

Плагины и массивы Gulp@next?

Cтолкнулся с такой проблемойВозникла надобность написать функцию для задач gulp, в которую передается объект вида:

179