#include stdio.h
成都创新互联公司的客户来自各行各业,为了共同目标,我们在工作上密切配合,从创业型小企业到企事业单位,感谢他们对我们的要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。专业领域包括网站设计制作、做网站、电商网站开发、微信营销、系统平台开发。
void printStar();
int main()
{
int a, b;
printf("请输入你要的行数和列数:");
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");
}
}
读取文件行数, 可以逐个字符读取文件,到文件尾,统计\n的个数
参考代码如下
#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函数,每次读取一行,到文件尾,然后计算读取的次数
#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("行数:%d\n",hs);
printf("行数:%d\n",hs);
}
如上是用c编写的,不是c++.
运行的时候可以把中文注释去掉。
完全可以运行的,我已经测试过了。
我的代码逻辑是:
矩阵行指针初值指向每行首地址,迭代依次取所有行指针指向值组成新行,所有行指针自增。最终组合新的矩阵。
#include stdio.h
#include malloc.h
int **getList(int row,int clo);//获取矩阵地址空间
void setNum(int **nList,int n);//填写数值
void prtList(int **nList,int row,int clo);//打印矩阵
int **zz(int **nList,int row,int clo);//转置函数
int main()
{
int row,clo,**nList=NULL,**nListSave=NULL;
printf("输入矩阵行列数:");
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个数值:\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));//这个会显示出二维数组中每个行的元素个数 (这里是指可容纳的个数)
printf("str总%d\n", sizeof(str));//这个会显示出二维数组中元素的个数(这里是指可容纳的个数)
//其实就是利用了sizeof函数来判断 我们都知道sizeof()用来判断一个类型所占用的字节数的
//所以:你问‘C语言二维字符串数组的行数怎么求啊?’ 你应该是说在定义数组时候没有显示的写出行数,可是此时需要求出行数是吧?
//那么 行数 = 可容纳元素总数(这里是指可容纳的个数) / 行中元素个数(这里是指可容纳的个数)
printf("行数=%d\n", sizeof(str)/sizeof(*str));
return 0;
}
就是考你对二维数组的理解了,别忘了 数组也是c的数据类型之一哦。
只要是数据类型就可以用sizeof判断 其类型占用的内存字节数。
正好c的字符就是占用一个字节啊,所以sizeof返回的字节数=字符个数。
^_^!