Ⅰ 如何用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