Как получить подстроку в C - PullRequest
9 голосов
/ 13 июля 2011

У меня есть строка, скажем, "THESTRINGHASNOSACES".

Мне нужно что-то, что получает из строки подстроку из 4 символов. При первом звонке я должен получить «ЭТО»; во втором я должен получить «TRIN»; в-третьих, я должен получить "GHAS". Как я могу сделать это в C?

Ответы [ 4 ]

11 голосов
/ 13 июля 2011

Если задача копирует только 4 символа, попробуйте зациклить. Если он будет более сложным, и вы запрашиваете функцию, попробуйте strncpy. http://www.cplusplus.com/reference/clibrary/cstring/strncpy/

strncpy(sub1, baseString, 4);
strncpy(sub1, baseString+4, 4);
strncpy(sub1, baseString+8, 4);

или

for(int i=0; i<4; i++)
    sub1[i] = baseString[i];
sub1[4] = 0;
for(int i=0; i<4; i++)
    sub2[i] = baseString[i+4];
sub2[4] = 0;
for(int i=0; i<4; i++)
    sub3[i] = baseString[i+8];
sub3[4] = 0;

Предпочитайте strncpy, если это возможно.

4 голосов
/ 13 июля 2011
#include <stdio.h>
#include <string.h>

int main() {
    char src[] = "SexDrugsRocknroll";
    char dest[5] = { 0 }; // 4 chars + terminator */
    int len = strlen(src);
    int i = 0;

    while (i*4 < len) {
        strncpy(dest, src+(i*4), 4);
        i++;

        printf("loop %d : %s\n", i, dest);
    }
}
0 голосов
/ 13 июля 2011
char originalString[] = "THESTRINGHASNOSPACES";

    char aux[5];
    int j=0;
    for(int i=0;i<strlen(originalString);i++){
        aux[j] = originalString[i];
        if(j==3){
            aux[j+1]='\0'; 
            printf("%s\n",aux);
            j=0;
        }else{
            j++;
        }
    }
0 голосов
/ 13 июля 2011

Если вы просто хотите напечатать подстроки ...

char s[] = "THESTRINGHASNOSPACES";
size_t i, slen = strlen(s);
for (i = 0; i < slen; i += 4) {
  printf("%.4s\n", s + i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...