我需要拆分 n 大小的字串并附加到一個陣列中。
例如:
輸入:
abcdefghi
4
輸出:
[abcd,bcde,cdef,defg,efgh,fghi]
我的代碼給出了錯誤的答案:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "abcdefghi";
char result[100];
for(int i=0;i<strlen(str);i ){
strncat(result, str, str[i] 4);
}
printf("result: %s\n ", result);
}
我的輸出:
abcdefgiabcdefgiabcdefgiabcdefgiabcdefgiabcdefgiabcdefgiabcdefgi
我犯了什么錯誤??
uj5u.com熱心網友回復:
請您嘗試以下方法:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "abcdefghi";
char result[100];
int n = 4;
int i, j;
char *p = result; // pointer to the string to write the result
*p = '['; // left bracket
for (i = 0; i < strlen(str) - n 1; i ) { // scan over "str"
for (j = i; j < i n; j ) { // each substrings
*p = str[j]; // write the character
}
*p = i == strlen(str) - n ? ']' : ','; // write right bracket or a comma
}
*p = '\0'; // terminate the string with a null character
printf("result: %s\n", result); // show the result
return 0;
}
輸出:
result: [abcd,bcde,cdef,defg,efgh,fghi]
uj5u.com熱心網友回復:
這對你有用嗎?
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] = "abcdefghijklmno";
char result[100][100];
int nSplit = 4; //Split size
int nLength = strlen (str); //Lenth of the string
int nTotalString = nLength - nSplit; //total possibilities
int nStrCount = 0;
for (int i = 0; i <= nTotalString ; i )
{
for (int j = 0; j < nSplit; j )
result[nStrCount][j] = str[i j];
nStrCount ;
}
//print array
printf ("result:[");
for (int k = 0; k < nStrCount; k )
printf ("\"%s\" ", result[k]);
printf ("]");
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/431183.html
標籤:C
