2017-11-01 12 views
-2

Enter String = "HELLOGOODMORNING" splitsize = 8 私はそれを8-8のサイズに分割してtempstring [8]に格納し、それを別々に処理してから別の8文字に同じ処理をしたい文字列は終了しません。それはcaETF = "HELLOGOO" を取るべきであり、それはpasstofunに渡すべき最初の時間(caETF)に同じサイズの文字列を分割し、それをC言語で処理するために一時文字列配列にコピーする方法は?

#include<stdio.h> 
#include<stdlib.h> 
void passtofun(char string[8]) 
{ 
//logic of operation 
} 
void main() 
{ 
char caETF[8]; 
char caText="HELLOGOODMORNING";//strlen will in multiple of 8. 
int i,j,len; 
len=strlen(caText); 
for(i = 0; i < len; i+=8) 
    { 
     strncpy(caETF,caText,8); 
     passtofun(caETF); 
     // passtofun() is the logic/function i want to perform on 8 char independently. 
    } 
} 

。 2番目にはcaETF = "DMORNING"とし、それをpasstofun(caETF)に渡し、同様に文字列の最後まで渡す必要があります。 私は上記のように試してみましたが、これは最初の8文字のみで動作します。

答えて

0

ここに行ってください!

strncpy(caETF,caText,8);この変更をstrncpy(caETF,caText+i,8);と変更すると、これはどの場合でも機能します。あなたが宣言された変数caTextも文字列ではなく文字ではないので

文字列の宣言はchar *Text = "HELLOGOODMORNING";ようにする必要がありませんchar caText = "HELLOGOODMORNING";

0
int main() 
{ 
    char *text = "HELLOGOODMORNING"; /* string length 16, array size 17 */ 

    /* size of these has to accomodate the terminating null */ 
    char one[8]; 
    char two[8]; 


    /* copy 8 characters, starting at index 0 */ 
    strncpy(two, &text[0], 8); 



    /* we can do strcpy if we're at the end of the string. It will stop when it hits '\0' */ 
    strcpy(one, &text[7]); 

    /* note that we still have to null-terminate the strings when we use strncpy */ 
    two[2] = '\0'; 


    /* but we don't have to null-terminate when we use strcpy */ 
    /* so we can comment this out: one[5] = '\0'; */ 

    printf("%s\n", one); 
    printf("%s\n", two); 


    return 0; /* returns 0, since no errors occurred */ 
} 
0

事はあなたの実際にやっては動作することはできません。
は、私はあなたの半分の文字列で切断中だけで興味を持っているという事実に怒鳴るコードを基づいていますが、あなたが実際に

#include <string.h> 

    void main() 
    { 
    char caETF[8 + 1]; // +1 for '\0' 
    char caText[]="HELLOGOODMORNING";// here you forget the [] 
    int i,j,len; 
    i = 0; 
    j = 1; //initialize j = 1 because i devide len by j and you cant divide by 0 
    len = strlen(caText) + 1; //add 1 because j = 1 
    for (j ; j < len ; j++) 
     { 
      if (len/j >= 2){ //if middle of string then copy in tmp string 
      caETF[i] = caText[j]; 
      i++; 
      } 
     } 
     caETF[i] = '\0'; //add '\0' so the computer understand that the string is terminated 
     passtofun(caETF); //now you can do whatever you want with that string 
    } 

caETF[i] = caText[j];はあなたから文字をコピーすることを可能にする任意の他の値であれば変更することができます位置jから新しいアレイ内の位置iに移動します。 (例えば:caETF[0] = caText[9])。

関連する問題