1

配列が空のスペースで終わっていない場合、コードの動作が異なるコードを書いています。最後にスペースがあるかどうかを確認したい。ない場合は、配列の末尾にスペースを追加します。ここに配列のコードがあります。

char* buffer[1024];
fgets(buffer,1024,fp);
char* str = buffer+2; // don't need the first two characters
char* pch;
pch = strtok(str," ");//I am dividing the string into tokens as i need to save each word in a separate variable
.
.
.

だから私の質問は、最初に、最後の文字がstrスペースかどうかを確認するにはどうすればよいですか? 次に、スペースでない場合、スペースを追加するにはどうすればよいですか?

私はすでに試しstrcatましたが、最後の文字がスペースかどうかを知る方法がまだわからないことが問題だと思います。これはすべて、文字列とベクトルを使用して簡単に実行できることを知っています。しかし、コードの解決策が欲しいです。ありがとう!

編集: これは、行を分割して単語数をカウントするためのコードです。

//At the end of this while loop. ncol will contain the number of columns 
while(1){
fgets(buffer,1024,fp);
if (buffer[1] == 'C'){ // the line is #C 1 2 3 4 5 6 7 8 9 10 11 12 13
    char* str = buffer+2;

int n = strlen( str );
if(n == 0 || str[n-1] != ' ') {
str[n] = ' ';
str[n+1] = '\0';
}

  char* pch;
  pch = strtok(str," ");
  while(pch != NULL){
      ncol++;
      pch = strtok (NULL, " ");

    }
} 
if(buffer[0] == '#'){
    numHeader++;
    }
    else {break;}

}
4

2 に答える 2

1

特定のケースのコードは次のとおりです

int n = strlen(str);
// *** RTRIM()
int idx = n-1;
for(; idx >= 0; idx--)
    if(str[idx] != '\0' && str[idx] != " " && str[idx] != '\t' && str[idx] != '\n' && str[idx] != '\r') 
        break;
str[idx + 1] = '\0';
// ***
int cnt = 0;
char* pch = strtok(str, " ");
while (pch != NULL)
{
    cnt++;
    printf ("%s\n",pch);
    pch = strtok (NULL, " ");
}

EDIT右側のトリムを使用

于 2013-06-25T17:02:50.813 に答える