為什麼 C 程式語言的編譯器不在整數後讀取字串?


問題

在 C 程式設計中,編譯器為什麼在整數後不讀取字串?我們如何解決這個問題?

解決方案

當你輸入整數後按回車讀取下一個值時,編譯器將空儲存在字串的首個字元中並且字串輸入結束,因為每次讀取空字元時,scanf 都會終止。

如何解決?

當我們在 int 或 float 後試圖讀取字串或字元時,我們應該讀取輸入緩衝區中存在的臨時字元。

以下是無錯誤的程式 -

示例

 線上演示

#include <stdio.h>
struct student{
   char name[10];
   int roll;
   char temp;
} s;
int main(){
   printf("Enter information of students:
");    printf("
Enter roll number: ");    scanf("%d", &s.roll);    scanf("%c",&s.temp); //read temporary character    printf("
Enter name: ");    gets(s.name);    printf("
Displaying Information of students:
");    printf("
Roll number: %d\t", s.roll);    printf("
name:%s\t", s.name);    return 0; }

輸出

Enter information of students:
Enter roll number: 3
Enter name: tutorialspoint
Displaying Information of students:
Roll number: 29806
name:tutorialspoint

更新日期:2021 年 3 月 9 日

2K+ 次瀏覽

啟動你的職業生涯

完成課程獲取認證

開始
廣告
© . All rights reserved.