2016-12-05 84 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 
相关问题