私はそのような関数に出くわしました。これは、特別な種類の単語を逆にするという私のタスクに非常に役立ちます。while ループでの複雑なポインター演算に問題があります。遅れている配列インデックス番号を表示する方法。word
、dPtr
またはsubword
(現在の反復で)printf ?
減算値 (subword-word) と (dPtr-dest) のみを達成しました。
「ゼロ」になる「foo」ポインターを作成して、減算によって検査値のみが得られるようにする方法はありますか?
コードは次のとおりです。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char* subword = NULL;
char* dest;
char* dPtr;
size_t n, len;
int len_int, n_int;
char word[] = "-example-compound-word";
len = strlen(word);
len_int = (int)len;
printf("string length is %d\n", len_int);
dest = malloc(len+1);
if (dest == NULL) return -1;
dPtr = dest;
while((subword = strrchr(word, '-'))!= NULL) {
printf("the pointer values are: subword-word %ld, dPtr-dest %ld\n", (subword-word), (dPtr-dest));
n = len - (subword-word) - (dPtr-dest);
n_int = (int)n;
printf("and the n is %d\n", n_int);
if (n-1 > 0)
strncpy(dPtr, subword+1, n-1);
*subword = '\0';
dPtr += n-1;
*dPtr = '-';
dPtr++;
}
strncpy(dPtr, word, len - (dPtr-dest));
dest[len] = '\0';
printf("the output is %s\n", dest);
return 0;
}
前もって感謝します!