30/09/2018, 18:53

Lỗi nhập và xuất của visual studio 2015!

mình bị lỗi này khi sử dụng kiểu char, cụ thể là:
khi mình nhập 1 kí tự bất kỳ thì khi xuất kí tự đó ra lại nó đều ra cái kí tự đặc biệt có bên bảng console.
có ai gặp trường hợp này rồi thì mong chỉ giúp mình fix với.
cảm ơn!


cụ thể hơn

Trịnh Minh Cường viết 21:02 ngày 30/09/2018

bạn thử dùng printf_s xem thế nào ?

KT viết 20:54 ngày 30/09/2018

không được bạn ơi, mình nghĩ là do scanf mà mình không biết nguyên nhân. cứ xài kiểu char là nhập bất kỳ cái gì thì đều xuất ra kí tự đặc biệt (%d = -52)
lỗi oái oăm thật

明玉 viết 20:56 ngày 30/09/2018

Bạn sửa lại cái scanf_s của bạn thành thế này xem, mình theo tài liệu trên này:

// số 1 là 1 ký tự
scanf_s("%c", &c, 1);

Cái lệnh này đảm bảo security nên phải tường minh là nhập bao nhiêu phần tử.

KT viết 21:09 ngày 30/09/2018

cảm ơn bạn rất nhiều.
trước mình dùng scanf và getch()
nhưng cái visual nó chỉ cho chạy khi sử dụng scanf_s và _getch()
mình nghĩ nó tương đương nên không biết sửa lỗi này.
cái scanf thì thêm _crt_secure_no_warnings là chạy được nhưng mỗi project thì phải lặp lại. bạn có biết cách fix ko? nếu có thì chỉ mình nha

Trịnh Minh Cường viết 20:56 ngày 30/09/2018

vẫn dùng được scanf và printf nhé bạn…


khi tạo project thì bạn bỏ check cái ô cuối cùng ấy

明玉 viết 21:00 ngày 30/09/2018

Mình nghĩ cái này nên giữ, rất có lợi khi debug, bởi vì nếu lập trình viên lỡ tay phá hỏng memory của chương trình là SDL nó báo ngay lập tức. Chịu khó thay mấy hàm đó bằng mấy hàm security cũng được mà

Pham Van Hai viết 20:56 ngày 30/09/2018

Cái đó chỉ phù hợp khi bạn dùng VS để code thôi, nếu dùng IDE (compiler) khác thì không được. Mình nghĩ đầu tiên nên học theo chuẩn C. Sau khi thành thạo rồi tùy vào mục đích của chương trình thì dùng cho phù hợp.
Với lại khi viết code C thì cũng nên tập thói quen hiểu rõ từng dòng lệnh của mình viết ra, tránh lỗi về security.

Người bí ẩn viết 20:57 ngày 30/09/2018

Nếu bạn thấy phiền hoặc không quen tay khi dùng hàm scanf_s mà muốn dùng hàm scanf bình thường thì làm như sau:

  1. Click chuột phải vào Project chọn Properties
  2. Ở ô bên trái chọn theo thứ tự sau: Configurations Properties => C/C++ => Preprocessor
  3. Nhìn qua ô bên phải, dòng đầu tiên Preprocessor Definitions, bấm chuột vào dòng đó, sẽ có 1 nút mũi tên ở cuối dùng hiện lên, bấm vào mũi tên đó và chọn Edit
  4. Ở ô đầu tiên trong cửa số vừa bật ra Preprocessor Definitions đánh dòng này vào: _CRT _NONSTDC _NO _WARNINGS .
  5. Chọn lần lượt: OK => Apply => OK
  6. Ở phần đầu code (line 1), thêm dòng này (trước line #include <stdio.h>) : #define _CRT_SECURE_NO_WARNINGS

Vậy là giờ bạn thoải mái dùng hàm scanfgetch(); mà không sợ lỗi nhé

Bài liên quan
0