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

Problem ze scanf

Object Storage Arubacloud
0 głosów
1,045 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ź 260 wizyt
pytanie zadane 16 kwietnia 2019 w C i C++ przez Neeq Obywatel (1,930 p.)
0 głosów
1 odpowiedź 656 wizyt
pytanie zadane 1 kwietnia 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)
0 głosów
2 odpowiedzi 530 wizyt
pytanie zadane 19 listopada 2017 w C i C++ przez Mikołaj Krupiński Początkujący (430 p.)

92,572 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...