main(){
FILE *fp
char **nm // 声明
char tmp[30]
int i,j,n
fp = fopen("username.txt","r") //打开文件
n=0
while(1){
if (fgets(tmp,30,fp)==NULL) break
n++
}
printf("n=%d\n",n) // 输出行数
rewind(fp) // 文件回绕到开始
// 动态分配
nm = (char **) malloc(sizeof(char *) * n)
for (j=0j<nj++){
nm[j] = (char *) malloc(sizeof(char) * 30)
}
for (i=0i<ni++){
if ( fgets(tmp,30,fp)==NULL) break // 读取整行,允许名字中间带空白
strcpy(nm[i],tmp) //存放 名字
}
fclose(fp) // 关闭文件
for (j=0j<nj++) printf("%s",nm[j]) //数组使用
// 释放内存 ( 不释放也可以)
// for (j=0j<nj++) free(nm[j])
// free(nm)
return 0
}
你是想把上次显示的擦除,然后斜着向下移动吧。
有几种方法可以试下。而且感觉你只是想在文本模式下做这件事,在图形模式下方式又不同。
文本模式下有几种思路:
printf (“欢迎使用本系统”)
printf(\b) 删除符,把这行删除,至于打印几个\b, 看你情况
printf(\n) 移到下一行
printf("空格 “欢迎使用本系统”),至于几个空格,依据你斜的程度来自己决定
中间为了适应频度,可以delay几毫秒
第二种方法
1.和上面一样,只是第2步上,调用系统调用cls擦除屏幕,然后打印n个\n移动下面某行上。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)