Where Did I Go Wrong?

The below is the warning I get when I try to debug inputs to my program:
warning C4996: 'scanf' was declared deprecated

It refers to this string:  scanf(" %c%c%c", &first, &second, &third);

I cannot figure out what is wrong.  Can anyone help?
Noo2thisAsked:
Who is Participating?
 
ThejakaConnect With a Mentor Commented:
Regarding the access violation:

In case you didn't check the msdn link, note the following excerpt:

==========

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 [. The buffer size is passed as an additional parameter immediately following the pointer to the buffer or variable. For example, if reading a string, the buffer size for that string is passed as follows:

char s[10];

scanf_s("%9s", s, 10);

The buffer size includes the terminating null. A width specification field may be used to ensure that the token read in will fit into the buffer. If no width specification field is used, and the token read is too big to fit in the buffer, nothing will be written to that buffer.

==========

Your line of code could be written as follows:

scanf_s(" %c%c%c", &first, 1, &second, 1, &third, 1);

Open in new window

0
 
StrongBad_RulesCommented:
Could you put the whole code on here or at least the declarations?
0
 
Noo2thisAuthor Commented:

int
main(void)
{
char first, second, third; /* input - first 3 letters of your name */
int yard_length, house_length; /* input - yard and house length */
int yard_width, house_width; /* input - yard and house width */
int grass_area; /* output - what you are working with */
int time_required; /* output - time required to cut the grass */
 
/* Get and display the customer's name. */
printf("Type in first 3 letters of your name and press return> ");
scanf(" %c%c%c", &first, &second, &third);
printf("Hello %c%c%c, let's see how big your yard is.\n", first, second, third);
	

Open in new window

0
Cloud Class® Course: Python 3 Fundamentals

This course will teach participants about installing and configuring Python, syntax, importing, statements, types, strings, booleans, files, lists, tuples, comprehensions, functions, and classes.

 
ThejakaCommented:
This is a microsoft CRT related warning. You can use

#pragma warning(disable:4996)

to disable the warning, then

#pragma warning(default:4996)

to reset it. Use before, after main method, respectively.

Alternately, try a later Microsoft CRT, or an alternate CRT.

Also, you can use scanf_s instead:
http://msdn.microsoft.com/en-us/library/w40768et(VS.80).aspx
0
 
Noo2thisAuthor Commented:
Thejaka,
I used scanf_s and it gave me access violations.  I'm new to this visual studio so where exactly do I put the #pragma warning(disable:4996) in my program?
0
 
ThejakaCommented:
The access violations may have been caused by your compile/link options. Try dynamically linking to CRT by selecting "Multithreaded DLL" build option and linking with msvcp, msvcrt libraries.

For the other, try like this:

#pragma warning(disable:4996)
int main(void)
{
  // Some code...
}
#pragma warning(default:4996)

Open in new window

0
 
Noo2thisAuthor Commented:
Thejaka, thanks.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.