2013-12-03 31 views
0

我需要編寫一個程序,讀取某個文本文件,並顯示每轉換成ASCII碼第十個符號。但是當它發現字母「ZZ」時需要停止閱讀。此外,如果少於10個符號或者沒有「ZZ」字母,程序不應打開文本文件。這是我目前的腳本,我不知道如何編寫程序停止閱讀的部分,直到找到「ZZ」,如果沒有字母,它不應該打開文本文件「ZZ 」。程序停止閱讀文本時,它發現某個字

#include <stdio.h> 
int main() 
{ 
    FILE* f1; 
    FILE* f2; 
    char fn1[FILENAME_MAX]; 
    char fn2[FILENAME_MAX]; 
    int i, c, c1; 

    printf("Please write the name of your file\n"); 
    gets(fn1); 
    f1 = fopen(fn1,"rt"); 
    for(i = 1;i <= 9;i++) { 
     c = fgetc(f1); 
      if (c == EOF){ 
      perror("Error while opening file\n"); 
      exit`enter code here`; 
     } 
    } 
    while((c = fgetc(f1)) != EOF){ 
    c1++; 
     if (c1 % 10 ==0){ 
     printf("%X ", c); 
     } 
    } 
    fclose(f1); 
    return 0; 
    } 
+0

「程序不應該打開一個文本文件......如果沒有‘ZZ’字母」就叫'CrytalBAll(文件名,「ZZ 「);'或者再次檢查程序要求。 – chux

+0

如果我想打開的文本文件中沒有「ZZ」字母* – user2961021

+0

'f2'和'fn2'未使用;他們應該被刪除。你甚至不應該在玩具程序中使用'gets()';它已從標準C11中刪除,並且已被棄用了很久(這是1988年原始Internet蠕蟲中使用的攻擊媒介之一(搜索Google for'morris internet worm')),請改用'fgets()',並記住刪除尾隨的換行符(或者,如果你在Windows上使用''rt''表示' - 這是'fopen()'的非可移植模式 - 則考慮'gets_s()'代替' ()') –

回答

-1

沒有辦法知道有多少ZZ或符號,而無需打開該文件,並第一次讀它,但這裏有一段代碼,你可以添加到您的腳本,將使程序停止當行包含ZZ (如果ZZ是單獨一條線,將只工作):

if(!strcmp(fgets(fn1 , sizeof fn1 , f1) , "ZZ")) 
     exit(1); 
+0

謝謝,這實際上對我有效! – user2961021