c語言結構中填充欄位問題,矩陣填充問題c語言

本文目錄一覽:

C語言結構體成員變數的中字元串型數值型在一個scanf函數里輸入的問題

//修改了一點,注意看說明 

#include stdio.h 

#include stdlib.h

struct stu

{

char name[10];

int num;

int age;

char addr[15];

}sa[3],sb[3],*pp,*qq; //創建結構體類型struct stu的同時,定義結構體數組sa、sb,定義結構體指針變數 pp、qq。 

int main()

{

FILE *fp;

char ch;

int i;

if((fp=fopen(“D:\\學習\\C語言源碼\\devC++\\第13章 文件\\stu_list.txt”,”w”))==NULL) //以只寫的方式打開文件 ,沒有該文件的情況下會創建該文件 

{

printf(“Cannot open file,press any key to exit”);

getchar();

exit(0);

}

printf(“input data\n”);

pp=sa;

for(i=0;i3;i++,pp++)

{

scanf(“%s%d%d%s”,pp-name,pp-num,pp-age,pp-addr); //先用scanf給結構體的成員變數賦值 

//在下在這句多加幾個空格,作為輸入數據的分隔符,注意輸入的人名和地址中應該沒有空格,不然會出錯 

//或者文件的輸入和輸出全部指定寬度 

fprintf(fp,”%s %d %d %s\n”,pp-name,pp-num,pp-age,pp-addr); //然後用fprintf將結構體成員變數的值寫入fp所指向的文件stu_list.txt中去 

}

fclose(fp); //完成寫入文件操作後,關閉文件,使指針fp不再指向該文件 

fp=fopen(“D:\\學習\\C語言源碼\\devC++\\第13章 文件\\stu_list.txt”,”r”); //以只讀的方式打開文件 

qq=sb;

printf(“name\tnumber age addr\n”);

for(i=0;i3;i++,qq++)

{

fscanf(fp,”%s%d%d%s”,qq-name,qq-num,qq-age,qq-addr); //先用fscanf將fp所指向的文件stu_list.txt中的值讀取到結構體成員變數中 

printf(“%s\t%5d%3d%s\n”,qq-name,qq-num,qq-age,qq-addr); //然後用printf輸出結構體變數的值 

}

fclose(fp); //完成讀取文件操作後,關閉文件,使指針fp不再指向該文件 

}

C語言結構體賦值的問題,剛輸入第一個name就提示出錯

這裡有兩個問題需要注意:首先是stu.name是數組,因此賦值時不必再取地址,因為數組名就是首地址;同樣,stu.sex,stu.age,stu.score是變數,所以需要去地址;因此代碼應該為:

PR(“name?”);scanf(“%s”,stu.name);

PR(“sex?”);scanf(“%c”,stu.sex);

PR(“age?”);scanf(“%d”,stu.age);

PR(“score?”);scanf(“%f”,stu.score);

但這時候編譯執行,你會發現輸入完name以後,沒有讓你輸入sex,便直接讓輸入age了,這個問題原因為:

scanf是從標準輸入緩衝區中讀取輸入的數據,而%c的字元輸入格式會接收回車字元,在輸入第一個scanf時輸入一串字元後按 回車結束,輸入緩衝中保存了這個回車符,遇到第二個scanf時,它自動把這個回車符賦給了ch2。所以相當於已經執行了scanf(“%c”,stu.sex);輸入的值是回車;而如果第二個scanf的輸入格式不是%c時,由於格 式不匹配,這個回車符會被自動忽略;

解決辦法:

1。清空輸入緩衝區

第一個scanf後加入清空輸入緩衝區函數:fflush(stdin);

代碼變為:

PR(“name?\n”); scanf(“%s”,stu.name);fflush(stdin);

PR(“sex?\n”); scanf(“%c”,stu.sex);

PR(“age?\n”); scanf(“%d”,stu.age);

PR(“score?\n”); scanf(“%f”,stu.score);

2。格式控制中加入空格

將第二個scanf改為:scanf(” %c”,stu.age);//在%號前面加一個空格,此時由於與回車不匹配秒就把回車忽略了

代碼變為:

PR(“name?\n”); scanf(“%s”,stu.name);

PR(“sex?\n”); scanf(” %c”,stu.sex);

PR(“age?\n”); scanf(“%d”,stu.age);

PR(“score?\n”); scanf(“%f”,stu.score);

此時便可得到你想要的結果。

請問在C語言中怎樣對結構體中的字元串進行賦值?

bbb,cccc” ;

string[] sArray=a.Split(“,”);

對應的sArray[0]就存放著aaaa

sArray[1]就存放著bbbb

依此類推

然後就是根據你的要求對結構體賦值

首先要先定義一個結構體kk

kk.te=sArray[0];

類似這樣的賦值就可以了

C語言,結構體問題?所佔內在位元組數,怎麼算的???

在c語言中如何計算結構體長度和共用體長度?

結構體的長度等於體內各個成員變數長度之後。如此題長度為字元串數組的長度加上兩個int型變數的長度,再加上double長度,最後結果為10+2+2+8=22。解析:char 每個字元佔一個位元組(因為是一個十長度的字元數組)所以是10位元組,int佔兩個位元組,double佔8個位元組。所以最後是10+2*2+8=22。

共用體的長度是體內成員中最長的長度。如果一個共用體內最長長度為12位元組,則共用體的長度就是12。

希望能夠幫到你。如果還有什麼問題在問?

c語言位操作的位欄位填充

單片機分8bit\16bit\32bit的數據寬度,這與硬體設計有關,我們在訪問數據時,如過存儲寬度是8bit的MCU,那麼上圖中 ,opaque 、fill_color、和第三行的預設定義佔了8bit,存儲為1個有效的最小單元,後面的 show_border、bordrr_coler、border_style和後面的2bit預設為一個8bit最小存儲單元。這樣做的目的是在訪問這這結構體成員的的時候,可以快速的存取這些變數;如果不要預設的第三行和第8行,讀取數據時,需要移位的變數就會比較多,這樣浪費MCU的時間資源;

原創文章,作者:VDNM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/133649.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
VDNM的頭像VDNM
上一篇 2024-10-04 00:00
下一篇 2024-10-04 00:00

相關推薦

  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智慧等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • 如何解決WPS保存提示會導致宏不可用的問題

    如果您使用過WPS,可能會碰到在保存的時候提示「文件中含有宏,保存將導致宏不可用」的問題。這個問題是因為WPS在默認情況下不允許保存帶有宏的文件,為了解決這個問題,本篇文章將從多個…

    編程 2025-04-29
  • Python將矩陣存為CSV文件

    CSV文件是一種通用的文件格式,在統計學和計算機科學中非常常見,一些數據分析工具如Microsoft Excel,Google Sheets等都支持讀取CSV文件。Python內置…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Java Thread.start() 執行幾次的相關問題

    Java多線程編程作為Java開發中的重要內容,自然會有很多相關問題。在本篇文章中,我們將以Java Thread.start() 執行幾次為中心,為您介紹這方面的問題及其解決方案…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python爬蟲亂碼問題

    在網路爬蟲中,經常會遇到中文亂碼問題。雖然Python自帶了編碼轉換功能,但有時候會出現一些比較奇怪的情況。本文章將從多個方面對Python爬蟲亂碼問題進行詳細的闡述,並給出對應的…

    編程 2025-04-29
  • NodeJS 建立TCP連接出現粘包問題

    在TCP/IP協議中,由於TCP是面向位元組流的協議,發送方把需要傳輸的數據流按照MSS(Maximum Segment Size,最大報文段長度)來分割成若干個TCP分節,在接收端…

    編程 2025-04-29

發表回復

登錄後才能評論