Помогите исправить ошибку в коде C

Программа для поска самого короткого слова в тексте. Выдает ошибки


Сам код:

#define _CRT_SECURE_NO_WARNINGS
#define _CRT_NONSTDC_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
#include <malloc.h>
#include <string.h>
void main() {
	setlocale(LC_ALL, "Russian");
	system("chcp 1251");
	char str[200], nst[50] = { 0 }, * slv, * raz = "";
	int k, min;
	k = 0;
	min = 100000;
	printf("Введите текст: ");
	fgets(str, 200, stdin);
	slv = strtok(str, raz);
	while (slv != NULL) {
		k = strlen(slv);
		if (k < min) {
			min = k;
			strcpy(nst, slv);

		}
		slv = strtok(NULL, raz);

	}
	printf("Самое короткое слово в тексте: %s", nst);
	return 0;
}

В последней же всё понятно написано. void функции это без return <что-то>.

А первая (C2440 'initializing': cannot convert from 'const char [1]' to 'char *') видимо потому что в С++ строковые литералы это const char*.

GCC сообщает об этом немного более понятным предупреждением: ISO C++ forbids converting a string constant to ‘char*’ .
UPD: а, и в студии же тоже в самом верху выдало более человеческое предупреждение.

Так что либо так

const char* raz = " ";

(тут кстати еще видимо пробел пропущен был, если слова разделяются пробелом)

Либо компилировать в режиме С, а не С++. Например, переименовав Source.cpp в Source.c

1 лайк