2014-11-25 6 views
-3

Я написал эту простую программу сортировки пузырьков, используя динамическое распределение памяти. Я использую компилятор VC++.Что не так в этой программе?

// bubble_sort.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 
#include <stdio.h> 
#include <stdlib.h> 
void bubble_sort(int a[],int n); 
int main() 
{ 
    int *p,i; 
    int n; 
    printf("Enter number of array elements\n"); 
    scanf("%d",&n); 
    p=(int*)malloc(sizeof(int)*n); 
    for(i=0;i<n;i++) 
     scanf("%d",(p+i)); 
    bubble_sort(p,5); 
    printf("Sorted elements\n"); 
    for(i=0;i<n;i++) 
     printf("%d ",p[i]); 
    free(p); 
    system("pause"); 
    return 0; 
} 
void bubble_sort(int a[],int n) 
{ 
    int i,j,temp; 
    for(i=0;i<n;i++) 
    { 
     for(j=0;j<n-1-i;j++) 
     { 
      if(a[j]>a[j+1]) 
      { 
       temp=a[j]; 
       a[j]=a[j+1]; 
       a[j+1]=temp; 
      } 
     } 
    } 
} 

Что не так в вышеуказанной программе? Компилятор показывает следующие предупреждения. Что это значит?

Warning 1 warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 

Warning 2 warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 

Пожалуйста, помогите мне.

+1

Предупреждения сообщают вам почти все, что вам нужно знать. Какая часть неясна? – Biffen

+2

Такие вопросы, вероятно, лучше подходят для http://codereview.stackexchange.com/. Но если программа делает то, что она должна, то она в некотором смысле правильна. – Biffen

+1

scanf имеет много проблем и его следует избегать - http://c-faq.com/stdio/scanfprobs.html – user93353

ответ

3

Это не проблема с вашей программой. microsoft debrecated scanf, вместо этого они вводят функцию scanf_s, что означает, что они ввели безопасность. Для компиляции кода есть два варианта.

  1. использовать функцию scanf_s вместо сканирования. (http://msdn.microsoft.com/en-us/library/w40768et.aspx)
  2. или поставить макрос "_CRT_SECURE_NO_WARNINGS" в настройках компилятора.
Смежные вопросы