2016-12-05 83 views
0

我想從文件中取出一行,並將第一個單詞放入數組,將其餘放入另一個數組中。但是SpanArray總是空的,我不知道爲什麼。讀取文件並跳過空格?

我的功能;

void arrayIni(char *fullArray, char *emptyArrayEng, char *emptyArraySpan) 
{ 
    int counter= 0; 
    while(1) 
    { 
     emptyArrayEng[counter] = fullArray[counter]; 
     counter++; 
     if (isspace(fullArray[counter])) 
     { 
      break; 
     } 
    } 
    counter++; 
    while(1) 
    { 
     emptyArraySpan[counter] = fullArray[counter]; 
     printf("%c",fullArray[counter]); 
     counter++; 
     if (fullArray[counter] == '\n'){ 
      break; 
     } 
    } 
    int printer=0; 
} 

主要在哪裏讀取文件;

int main() { 
    int ch; 
    char str[128], meaning[256]; 
    FILE *file = fopen("/Users/users/Desktop/mko/mko/txttt", "r"); 
    char array[300]; 
    while(fgets(array, 300, file)) 
     { 
      arrayIni(array, str, meaning); 
      insert(str, meaning); 
     } 
    } 
    return 0; 
} 
+3

您必須終止每串用''\ 0''。 –

+2

'emptyArraySpan [counter] =':使用另一個計數器。 – BLUEPIXY

+1

嘗試'sscanf(fullArray,「%s%[^ \ n]」,emptyArrayEng,emptyArraySpan);' – BLUEPIXY

回答

0

您看到它的arrayIni函數有3個問題。

  1. 您還沒有終止陣列,'\0'
  2. emptyArraySpan索引應該有不同的櫃檯進行
  3. 此外,你應該傳遞的長度數組fullArray,要arrayIni功能和驗證它反對計數器以確保沒有超出界限的訪問

void arrayIni(char *fullArray, int fullArrayLen, char *emptyArrayEng, char *emptyArraySpan) 
{ 
    int counter= 0; 
    int counter_1 = 0; 

    while(counter < fullArrayLen) 
    { 
     emptyArrayEng[counter] = fullArray[counter]; 
     counter++; 
     if (isspace(fullArray[counter])) 
     { 
      break; 
     } 
     } 

     emptyArrayEng[counter] = '\0'; 
     counter++; 
     while(counter < fullArrayLen) 
     { 
     emptyArraySpan[counter_1] = fullArray[counter]; 
     printf("%c",fullArray[counter]); 
     counter_1++; 
     counter++; 
     if (fullArray[counter] == '\n'){ 
       break; 
      } 
     } 
     emptyArraySpan[counter_1] = '\0'; 
     int printer=0; 
} 
0

工作示例中,我正在編寫將字符串拆分爲單詞的代碼;你可以在你的程序中使用此功能

#include <stdio.h> 
#define TRUE 1 

int getWords(char *base, char target[10][20]) 
{ 
    int n=0,i,j=0; 

    for(i=0;TRUE;i++) 
    { 
     if(base[i]!=' '){ 
      target[n][j++]=base[i]; 
     } 
     else{ 
      target[n][j++]='\0';//insert NULL 
      n++; 
      j=0; 
     } 
     if(base[i]=='\0') 
      break; 
    } 
    return n; 

} 
int main() 
{ 
    int n; //number of words 
    int i; //loop counter 
    char str[]="This is Mike"; 
    char arr[10][20]; 

    n=getWords(str,arr); 

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

    return 0; 
} 

輸出

This 
is 
Mike 
相關問題