2017-01-17 90 views
-1

我正在尝试编写将从一个.txt文件读入摩尔斯代码到char数组的代码。然后我在一个测试文件中读入另一个char数组。从那里我想将测试文件读入莫尔斯电码并将其打印到显示器上。如何从c中的循环中将char从一个char数组分配给另一个char数组?

我的输入文件是:

A.- B-... C-.- D-.. E. F.._. G--. H.... I.. J.--- K-.- L.-.. M-- N-. O--- P.--. 
Q--.- R.-. S... T- U..- V...- W.-- X-..- Y-.-- Z--.. 

ABCDEFGHIJKLMNOPQRSTUVWXYZ 

我的.c代码是循环如下

#include <stdio.h> 
#include <stdlib.h> 

void main() 
{ 
    int i=0,j=0, n=0,x=0, SIZE=100; 

    char SENTENCE[100][100]; 
    char morse[100][100]; 
    char fileName[SIZE]; 
    char SecondFile[SIZE]; 


    printf("Enter a file name\n"); 
    scanf("%s", fileName); 

    FILE *file; /* FILE pointer */ 
    file = fopen(fileName, "r"); /* open a text file for reading */ 


    while(fgets(morse[n++],20,file)) 
    { 
    } 


    for (i=0 ; i<n; i++) 
    { 
     printf("\n%s", morse[i]); 
    } 


    printf("\n\nEnter a file name\n"); 
    scanf("%s", SecondFile); 
    FILE *start; /* FILE pointer */ 
    start = fopen(SecondFile, "r"); /* open a text file for reading */ 


    while(fgets(SENTENCE[j++],30,start)) 
    { 
    } 


    for (i=0 ; i<j; i++) 
    { 
     printf("\n%s", SENTENCE[i]); 
    } 


    for (x=0; x<=SIZE; x++)      
    {           
     if(SENTENCE[x]=='A'||SENTENCE[x]=='a') 
      printf("\n%s", morse[x]);    
     else if(SENTENCE[x]=='B'||SENTENCE[x]=='b') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='C'||SENTENCE[x]=='c') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='D'||SENTENCE[x]=='d') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='E'||SENTENCE[x]=='e') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='F'||SENTENCE[x]=='f') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='G'||SENTENCE[x]=='g') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='H'||SENTENCE[x]=='h') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='I'||SENTENCE[x]=='i') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='J'||SENTENCE[x]=='j') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='K'||SENTENCE[x]=='k') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='L'||SENTENCE[x]=='l') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='M'||SENTENCE[x]=='m') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='N'||SENTENCE[x]=='n') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='O'||SENTENCE[x]=='o') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='P'||SENTENCE[x]=='p') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='Q'||SENTENCE[x]=='q') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='R'||SENTENCE[x]=='r') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='S'||SENTENCE[x]=='s') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='T'||SENTENCE[x]=='t') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='U'||SENTENCE[x]=='u') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='V'||SENTENCE[x]=='v') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='W'||SENTENCE[x]=='w') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='X'||SENTENCE[x]=='x') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='Y'||SENTENCE[x]=='y') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='Z'||SENTENCE[x]=='z') 
      printf("\n%s", morse[x]); 
     else if(SENTENCE[x]=='\0') 
      printf("nothing read"); 
     else if(SENTENCE[x]=='.') 
      printf("nothing read"); 
     else 
     printf("error reading in a character from the file"); 

    } 
    fclose(file); 
    fclose(start); 

    getch(); 
} 

在上面,我要打印的确切莫尔斯电码等价。唯一的问题是当我试图比较数组SENTENCE[x]ch时,我总是收到警告。无论如何,还是要将某个char数组中的某些字符分配给c中的另一个char数组。有什么办法可以做到这一点吗?我目前正在编写代码。

+0

记得你的'SENTENCE'是二维数组 – artm

+1

只要问自己,什么是'SENTENCE [x]'的类型,'ch'的类型是什么?你知道如何解决这个问题吗?事实上,警告消息会给你这个信息。 – kaylum

+0

SENTENCE [X]指向一个长度为100个字符的字符串。 –

回答

1

全文[X]不返回字符,它返回的char []

记住,你定义句为char [] []

+0

我刚写了一个测试程序,意识到了差异。抱歉。 – joseph

+0

不用担心,你现在就知道了。 – WhozCraig

相关问题