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

Problem ze scanf

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
1,234 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ź 460 wizyt
pytanie zadane 16 kwietnia 2019 w C i C++ przez Neeq Obywatel (1,930 p.)
0 głosów
1 odpowiedź 913 wizyt
pytanie zadane 1 kwietnia 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)
0 głosów
2 odpowiedzi 770 wizyt
pytanie zadane 19 listopada 2017 w C i C++ przez Mikołaj Krupiński Początkujący (430 p.)

93,430 zapytań

142,427 odpowiedzi

322,652 komentarzy

62,792 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

...