我正在學習 C。當我在 Linux 上使用這段代碼時,我沒有遇到這種錯誤。你能告訴我如何修復它嗎?我嘗試了很多解決方案,但沒有任何效果T_T。提前致謝。


錯誤2
這是代碼
#include <conio.h>
#include <stdio.h>
void main()
{
int a;
float x;
char ch;
char* str;
printf("Enter integer number: ");
scanf("%d", &a);
printf("\nEnter real number : ");
scanf("%f", &x);
printf("\nEnter a character: ");
fflush(stdin);
scanf("%c", &ch);
printf("\nEnter a string: ");
fflush(stdin);
scanf("%s", str);
printf("\nData:");
printf("\n Integer: %d", a);
printf("\n Real: %.2f", x);
printf("\n Character: %c", ch);
printf("\n String: %s\n", str);
}
uj5u.com熱心網友回復:
首先這個電話
fflush(stdin);
有未定義的行為。去掉它。
其次在 scanf 的這個呼叫中
scanf("%c", &ch);
你應該在轉換說明符前面加上一個空格
scanf(" %c", &ch);
^^^^^
否則將讀取空白字符作為換行符 '\n'。
指標str未初始化并且具有不確定的值
char* str;
所以這個電話
scanf("%s", str);
呼叫未定義的行為。
例如,您應該宣告一個字符陣列
char str[100];
并呼叫函式 scanf 像
scanf("
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/356326.html
上一篇:在編譯時以二進制形式隱藏字串?
