How to get substring in C
I have a string, let's say "THESTRINGHASNOSPACES".
I need so开发者_开发百科mething that gets a substring of 4 characters from the string. In the first call, I should get "THES"; in the second, I should get "TRIN"; in the third, I should get "GHAS". How can I do that in C?
If the task is only copying 4 characters, try for loops. If it's going to be more advanced and you're asking for a function, use strncpy
.
strncpy(sub1, baseString, 4);
strncpy(sub1, baseString+4, 4);
strncpy(sub1, baseString+8, 4);
or
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;
Prefer strncpy if possible.
#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);
}
}
If you just want to print the substrings ...
char s[] = "THESTRINGHASNOSPACES";
size_t i, slen = strlen(s);
for (i = 0; i < slen; i += 4) {
printf("%.4s\n", s + i);
}
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++;
}
}
精彩评论