Ⅰ 如何用c语言制作一个可以在开始屏幕上滚动的字幕
实现滚动字幕:
一、单行滚动,写一个函数,每次调用让全局或静态字符数组向一个方向移位(比如左移,从最右边一个非0字符开始遍历,依次覆盖左边的一个字符,最左边的字符被第二个字符覆盖,最右边一个非0位变移出的那个字符)。记得保留结束符号0。
二、之后循环打印字符数组。每次使用system("cls");清空控制台显示。
三、多行滚动,同理,只不过把字符移动覆盖,改成字符串移动覆盖。(移动方向的后一行覆盖前一行,把移动方向第一行内容赋值给最后一行)。
//ps:由于肉眼观察,移动需要间隔,用Sleep函数,但该函数会让线程停止,如滚屏间隔期间,还希望其它部分正常运行,需要写线程。
下面是参考代码:
#include<stdio.h>
#include <windows.h>
void sScreen(char str[],int len,int f);//len:内容长度,不包含结束符号。f=1向左移动。f=0向右移动;
int main()
{
char str[]="I LOVE YOU";
while(1)
{
printf("%s ",str);
sScreen(str,10,0);
Sleep(1000);
system("cls");
}
return 0;
}
void sScreen(char str[],int len,int f)
{
int i;
char c;
if(f)
{
c=str[0];
for(i=0;i<len-1;i++)
str[i]=str[i+1];
str[len-1]=c;
}
if(!f)
{
c=str[len-1];
for(i=len-1;i>0;i--)
str[i]=str[i-1];
str[0]=c;
}
}
Ⅱ c语言 输入若干行字符串,行数不确定,以连敲两次回车结束输入。然后输出与输入相同字符串
这个应该满足要求
你可以先试试
#include <stdio.h>
int main()
{
char s;
char p;
s = 0;
while(p=getchar())
{
if(p=='\n'&&s==p)
break;
s = p;
putchar(p);
}
return 0;
}
Ⅲ C语言程序里输出字符串只有一遍,但运行时怎么就2遍了
//程序有错,交换两处代码后排除!
//下面是正确的程序,回答见后!
#include <stdio.h>
void main()
{
int i,j;
char chars[5][7];
char *p[5]={chars[0],chars[1],chars[2],chars[3],chars[4]};
for(i=0;i<=4;i++)
{ printf("请输入字符串%d:",++i);
i--;//代码提前
scanf("%s",chars[i]); /*chars[i]改成p[i时,程序运行时有错误,为什么*/
}
for(i=0;i<=4;i++)
{
printf("字符串%d:",++i);
--i;//代码提前
printf("%s\n",*(p+i));
}
getch();
}
//chars[i]改成p[i]时,程序改正后,运行不会有错误,因为chars[i]与p[i]等价!
//语句中的7是表示字符串长度,每个字符串可以输入6个字符,
//最后一个用于存放'\0'
Ⅳ C语言中字符串的处理
strncmp函数【返回值】若str1与str2的前n个字符相同,则返回0;若s1大于s2,则返回大于0的值;若s1 若小于s2,则返回小于0的值。----网络 所以这个的意思就是如果b【0】与a【la-testlen】开始比较testlen个元素,如果相等if就成立 因为!非零==0 !0==1