要在C中編寫程序,該程序從文件 中讀取行,該文本的名稱將在運行時爲用戶提供。 程序應該選擇文件的隨機行並打印屏幕,給用戶一個時間X來鍵入屏幕上顯示的文字。 X的時間取決於每個短語的長度,你可以認爲每個字符會給用戶1秒。 如果郵件打印正確且準時,用戶會收到祝賀。如果錯誤消息打印(並且準時),則準確地通知用戶他所犯的錯誤。最後,如果在打印消息之前時間用完,然後詢問用戶他是否想繼續,並且提供用戶對該文件的新隨機行重複上述序列的答案是肯定的,否則該程序終止。我怎樣才能從函數返回一個char值? in c unix
有人能告訴我我做錯了什麼;如果你寫你所需要的代碼,我本來就容易......
感謝聶
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void catch_alarm (int sig)
{
char ans[2];
printf ("Operation timed out. Exiting...\n");
printf ("thes mia akoma eukairia?[y/n]\n");
scanf ("%s", ans);
exit (0);
}
void exodos (int sig)
{
printf ("termatismos ergasias... \n");
signal (SIGQUIT, SIG_DFL);
exit (0);
}
int main (int argc, char **argv)
{
int i, j, x, count, gram[80];
i = j = count = 0;
char arxeio[25], grammi[80], buf[80][80], protash[80], ch, ans[2];
FILE *fp;
printf("dwse to onoma tou arxeiou pou thes na anoixeis: \n");
scanf("%s", arxeio);
do
{
fp = fopen(arxeio, "r");
while ((ch = getc(fp)) != EOF)
{
buf[i][j] = ch;
if (buf[i][j] == '\n')
{
++i;
gram[i] = j;
j = 0;
}
++j;
}
fclose(fp);
// edw vazoume tin rand kai to apotelesma tis sto 4 parakatw
x = rand() % i;
j = 0;
while (j<=gram[x+1])
{
printf("%c", buf[x][j]);
j++;
}
/* elenxos entos xronou an oxi TIME OUT... */
signal(SIGALRM, catch_alarm);
fflush(stdout);
alarm(gram[x+1]);
scanf("%s",protash);
if (ans[0] == 'n')
signal(SIGQUIT, exodos);
/* elenxos or8hs eisagwghs dedomenwn*/
j = 0;
while (j<=(gram[x+1]-2))
{
if (buf[x][j+1] != protash[j])
printf("anti gia %c egrapses %c\n", buf[x][j+1], protash[j]);
else
printf("swsto\n");
++j;
}
/* deuterh eukairia... */
}
while (ans[0] == 'y');
return 0;
}
兩件事情。 1)適當的格式(和英文評論)將幫助我們很多。 2)程序沒有做什麼?您是否收到編譯錯誤或意外的運行時行爲。 – 2010-11-08 13:40:39