#include stdio.h
成都創(chuàng)新互聯(lián)公司的客戶來自各行各業(yè),為了共同目標,我們在工作上密切配合,從創(chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對我們的要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。專業(yè)領域包括網(wǎng)站設計制作、做網(wǎng)站、電商網(wǎng)站開發(fā)、微信營銷、系統(tǒng)平臺開發(fā)。
void printStar();
int main()
{
int a, b;
printf("請輸入你要的行數(shù)和列數(shù):");
scanf("%d %d", a, b);
printStar(a,b);
return 0;
}
void printStar(int r, int c){
int i, j;
for(i =0 ; i r; i++){
for(j = 0; jc; j++){
printf("*");
}
printf("\n");
}
}
讀取文件行數(shù), 可以逐個字符讀取文件,到文件尾,統(tǒng)計\n的個數(shù)
參考代碼如下
#include?stdio.h
int?main()
{
int?c;
FILE?*fp;
int?lines=0;
fp=fopen("in.txt",?"rb");
if(fp)
{
while((c=fgetc(fp))?!=?EOF)
if(c=='\n')?lines++;
printf("%d\n",lines);
fclose(fp);
}
return?0;
}
也可以通過fgets函數(shù),每次讀取一行,到文件尾,然后計算讀取的次數(shù)
#include?stdio.h
#include?string.h
int?main()
{
char?s[100];
FILE?*fp;
int?lines=0;
fp=fopen("in.txt",?"r");
if(fp)
{
while((fgets(s,100,fp))?!=?NULL)
if(s[strlen(s)-1]=='\n')?lines++;
printf("%d\n",lines);
fclose(fp);
}
return?0;
}
#include?stdio.h
int?hangshu(char?file[])//輸入工程目錄下的文件名,或者其他目錄下絕對路徑名例如:c:\\1.txt;
{
char?c;
int?h=0;
FILE?*fp;
fp=fopen(file,"r");
if(fp==NULL)
return?-1;//表示文件打開錯誤
while((c=fgetc(fp))!=EOF)
{
if(c=='\n')
h++;
else
{
c=fgetc(fp);//這是處理最后一行可能沒有換行標志,但是確文件結束。
if(c==EOF)
{
h++;
break;
}
}
}
return?h;
}
int?main()
{
int?hs=hangshu("c:\\1.txt");//這里說明你要打開的文件。這個是c盤根目錄下文件
int?hst=hangshu("1.txt");//工程目錄下的文件。
printf("行數(shù):%d\n",hs);
printf("行數(shù):%d\n",hs);
}
如上是用c編寫的,不是c++.
運行的時候可以把中文注釋去掉。
完全可以運行的,我已經(jīng)測試過了。
我的代碼邏輯是:
矩陣行指針初值指向每行首地址,迭代依次取所有行指針指向值組成新行,所有行指針自增。最終組合新的矩陣。
#include?stdio.h
#include?malloc.h
int?**getList(int?row,int?clo);//獲取矩陣地址空間
void?setNum(int?**nList,int?n);//填寫數(shù)值
void?prtList(int?**nList,int?row,int?clo);//打印矩陣
int?**zz(int?**nList,int?row,int?clo);//轉置函數(shù)
int?main()
{
int?row,clo,**nList=NULL,**nListSave=NULL;
printf("輸入矩陣行列數(shù):");
scanf("%d%d",row,clo);
nList=getList(row,clo);
setNum(nList,row*clo);
printf("輸入的矩陣為:\n");
prtList(nList,row,clo);
printf("轉置后的矩陣為:\n");
nListSave=zz(nList,row,clo);
free(nList);
nList=nListSave;
prtList(nList,clo,row);
return?0;
}
int?**zz(int?**nList,int?row,int?clo)
{
int?*nSave=NULL,**listSave=NULL,**listp=nList,*p=NULL,i,j;
nSave=(int?*)malloc(sizeof(int)*row*clo);
listSave=(int?**)malloc(sizeof(int*)*clo);//倒置后的矩陣
p=nSave;
for(j=0;jclo;j++)
{
for(i=0;irow;i++)
{
*p++=*listp[i];
listp[i]=listp[i]+1;
}
}
for(i=0;iclo;i++)
listSave[i]=nSave[i*row];
for(i=0;irow;i++)
free(nList[i]);//釋放原矩陣行空間
return??listSave;
}
void?prtList(int?**nList,int?row,int?clo)
{
int?i,j;
for(i=0;irow;i++)
{
for(j=0;jclo;j++)
printf("%d?",nList[i][j]);
printf("\n");
}
}
void?setNum(int?**nList,int?n)
{
int?*p=nList[0];
printf("填寫矩陣中%d個數(shù)值:\n",n);
while(n--0)
scanf("%d",p++);
}
int?**getList(int?row,int?clo)
{
int?*nums,**nList,i;
nums=(int?*)malloc(sizeof(int)*row*clo);
nList=(int?**)malloc(sizeof(int*)*row);
for(i=0;irow;i++)
nList[i]=nums[i*clo];
return?nList;
}
#include?stdio.h
int?main()
{
char?str[][6]?=?{"abcd",?"ABC",?"abc"};
printf("str行內元素%d\n",?sizeof(*str));//這個會顯示出二維數(shù)組中每個行的元素個數(shù)?(這里是指可容納的個數(shù))
printf("str總%d\n",?sizeof(str));//這個會顯示出二維數(shù)組中元素的個數(shù)(這里是指可容納的個數(shù))?
//其實就是利用了sizeof函數(shù)來判斷?我們都知道sizeof()用來判斷一個類型所占用的字節(jié)數(shù)的
//所以:你問‘C語言二維字符串數(shù)組的行數(shù)怎么求???’?你應該是說在定義數(shù)組時候沒有顯示的寫出行數(shù),可是此時需要求出行數(shù)是吧?
//那么????行數(shù)?=?可容納元素總數(shù)(這里是指可容納的個數(shù))?/?行中元素個數(shù)(這里是指可容納的個數(shù))
printf("行數(shù)=%d\n",?sizeof(str)/sizeof(*str));
return?0;
}
就是考你對二維數(shù)組的理解了,別忘了 數(shù)組也是c的數(shù)據(jù)類型之一哦。
只要是數(shù)據(jù)類型就可以用sizeof判斷 其類型占用的內存字節(jié)數(shù)。
正好c的字符就是占用一個字節(jié)啊,所以sizeof返回的字節(jié)數(shù)=字符個數(shù)。
^_^!