欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

為什么正確的編程源代碼粘貼到別處就不能運行?

錢良釵2年前17瀏覽0評論

更新:應該是scanf的問題。scanf在讀取一個字符串之后再讀取數字,有時就會出現問題。

你可以試試這幾句話:

chars[20];

scanf("%s",s);

printf("string:%s:stringend\n",s);

charc=getchar();

printf("char:%c:charend\n",c);

如果你輸入一個前后帶幾個空格的字符串,比如“123”,你會發現s忽略了前面的空格,讀入了非空格字符(123),然后停在了后面的第一個空格,并把這個空格放回輸入流了。所以,第二行就會立即執行,讀入一個空格然后輸出。

這是個很有可能的原因...不過更詳細的錯誤可能需要你提供多一點的信息,比如輸入樣例和報錯信息了。我自己試過,沒有遇到問題。

---

我覺得最有可能的原因是struct的對齊問題,你可以把struct定義里頭float挪到最上面試試。因為struct的對齊問題是不同編譯器不太一樣的,你可以提供多點信息,比如用的哪個編譯器,和報錯信息。

因為聽你的描述,struct大小從28字節變成32字節就能正常運行,所以可能是這里的問題。

但是我跑過你的代碼了,我能正常運行,雖然我要把flushall()改成_flushall()

#include<stdio.h>

#include<malloc.h>

structStudent{

charname[20];

shortintage;

floatscore;

};

intmain(void){

intlen;

inti;

structStudent*pArr;

printf("%d\n",sizeof(structStudent));

printf("請輸入學生個數:\n");

printf("len=");

scanf("%d",&len);

_flushall();

pArr=(structStudent*)malloc(sizeof(structStudent)*len);

for(i=0;i<len;i++){

printf("請輸入%d\n",i+1);

_flushall();

printf("score=");

scanf("%lf",&pArr[i].score);

_flushall();

printf("name=");

scanf("%s",pArr[i].name);

printf("age=");

scanf("%d",&pArr[i].age);

}

free(pArr);

return0;

}

說明有可能咱們的編譯器不一樣~