• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem ze scanf

VPS Starter Arubacloud
0 głosów
1,014 wizyt
pytanie zadane 8 stycznia 2018 w C i C++ przez BigBuzz Nowicjusz (180 p.)
otagowane ponownie 9 stycznia 2018 przez criss

Witam, program niby dziala, ale gdy wpisuje jakas dana z klawiatury moj visual basic sie buntuje.

W ostrzezeniach mam cos takiego „scanf_s: przekazano niewystarczającą liczbę argumentów dla ciągu formatowania "

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>

void wydruk_tablicy(char *Ela, int *Ula)
{
	int i;
	printf("\n  %s:", Ela);
	for (i = 0;i<5;i++)
		printf("   %d", Ula[i]);
	_getch();
}

void przyklad1(void)
{
	system("cls");
	int Ala[5] = { 1,3,5,7,9 };
	int *p = Ala, *q = &Ala[2], *r = &Ala[3], *s = &Ala[4];

	printf("*p++ \nPrzed:  *p = %d", *p);	//	Testowanie *p++
	printf("\n\t\t%d", *p++);
	printf("\n   Po:  *p = %d", *p);
	wydruk_tablicy("Ala", Ala);

	printf("\n\n(*q)++ \nPrzed:  *q = %d", *q);	//	Testowanie (*q)++
	printf("\n\t\t%d", (*q)++);
	printf("\n   Po:  *q = %d", *q);
	wydruk_tablicy("Ala", Ala);

	printf("\n\n*--r \nPrzed:  *r = %d", *r);	//	Testowanie *--r
	printf("\n\t\t%d", *--r);
	printf("\n   Po:  *r = %d", *r);
	wydruk_tablicy("Ala", Ala);

	printf("\n\n--*s \nPrzed:  *s = %d", *s);	//	Testowanie --*s
	printf("\n\t\t%d", --*s);
	printf("\n   Po:  *s = %d", *s);
	wydruk_tablicy("Ala", Ala);
}

void kopiuj(char *d, char *s)
{
	while (*d++ = *s++);
}

void przyklad2(void)
{
	char Ala[20], Ela[20], Ula[20];
	system("cls");
	printf("\nSource: ");
	scanf_s("%s", Ala);
	kopiuj(Ela, Ala);
	printf("   Ela: %s", Ela);
	printf("\n   Ula: %s", strcpy_s(Ula, Ala));
	_getch();
}

void main(void)
{
	char pyt;
	while (1)
	{
		system("cls");
		printf("\n\r  1 - przyklad 1");
		printf("\n\r  2 - przyklad 2");
		printf("\n\rEsc - koniec");
		pyt = _getch();
		switch (pyt)
		{
		case '1':
			przyklad1();
			break;
		case '2':
			przyklad2();
			break;
		case 27:
			return;
		default:
			printf("\n\nUWAZAJ!!!");
			_getch();
		}
	}
}


// 0. Segment main - konstrukcja while
// 1. Funkcja wydruk_tablicy - skraca program
// 2. Parametry formalne i aktualne funkcji wydruk_tablicy
// 3. Cztery przypadki w funkcji przyklad1
// 4. Funkcja kopiuj
// 5. Prototyp funkcji strcpy - wartosc zwracana    
komentarz 8 stycznia 2018 przez k3ybo4rd Obywatel (1,180 p.)
edycja 8 stycznia 2018 przez k3ybo4rd

A do scanf_s nie potrzebujesz czasami określić wielkości bufora?

https://stackoverflow.com/questions/23378636/string-input-using-c-scanf-s

 

scanf_s("%s", name, sizeof(name) );

 

" Unlike scanf and wscanf, scanf_s and wscanf_s require the buffer size to be specified for all input parameters of type c, C, s, S, or string control sets that are enclosed in []. The buffer size in characters is passed as an additional parameter immediately following the pointer to the buffer or variable. For example, if you are reading a string, the buffer size for that string is passed as follows:"

https://msdn.microsoft.com/en-us/library/w40768et.aspx

komentarz 17 stycznia 2018 przez SimiVoid Pasjonat (19,790 p.)

Można tez użyć

sscanf("%s", name);

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
1 odpowiedź 249 wizyt
pytanie zadane 16 kwietnia 2019 w C i C++ przez Neeq Obywatel (1,930 p.)
0 głosów
1 odpowiedź 627 wizyt
pytanie zadane 1 kwietnia 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)
0 głosów
2 odpowiedzi 515 wizyt
pytanie zadane 19 listopada 2017 w C i C++ przez Mikołaj Krupiński Początkujący (430 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...