2016-04-13 12 views
0

Whiel делает проверку cpp, проверка cpp показывает «недействительный scanf», и он говорит: «scanf без ограничений ширины поля может сбой с огромные входные данные в некоторых версиях libc. ' Это дает какой-то крах для моей программы. Как избавиться от этой проблемы .Please помочьполучение ошибки «scanf без ограничений ширины поля может сбой с огромными входными данными на некоторых версиях libc»

int a; 
    char str[32]; 
    int part[4]; 
    //after this i am storing some string in 'str'. 
    a=sscanf(str,"%d%d%d%d",&part[0],&part[1],&part[2],&part[3]);//here i am getting that cppcheck portability error. 

ответ

1

Как избавиться от этой проблемы

Написав C++, а не с, и с помощью C++ стандартных средств библиотеки, а не амбулаторной датированные и часто небезопасные инструменты библиотеки c-standard.

#include <iostream> 
#include <sstream> 

void test() 
{ 
    std::string str("4 5 6 7"); 
    int part[4]; 

    std::istringstream ss(str); 
    ss >> part[0] 
    >> part[1] 
    >> part[2] 
    >> part[3]; 

} 
0

Что вы получаете просто предупреждение: некоторые Libc реализации может привести к сбою, если, скажем, вы даете слишком длинные строки в% s и т.д. CPPCheck рекомендует вам использовать другие, типизированные методы, с ++, чтобы достичь своей цели (т. е. потоки и преобразователи std :: to_string() и т. д.)