- 締切済み
C言語に詳しい方お願い致しいます
文字列Aから文字列Bを除いた結果を表示するプログラムなのですが 一ヶ所分からない部分があります。 #include <stdio.h> #include <string.h> int main(void){ char str1[] = "abcdefg"; char str2[] = "cde"; char str3[128] = ""; char *p1 = str1, *p2; size_t len; len = strlen(str2); while((p2 = strstr(p1,str2)) != NULL) { strncat(str3,p1,p2 - p1); p1 = p2 + len; printf("----\n"); printf("p2=%s\n", p2); printf("str3=%s\n", str3); printf("p1=%s\n", p1); } strcat(str3,p1); printf("%s\n",str3); return 0; } while文中の p1 = p2 + len; なのですが、何故これでp1の内容が「fg」になるのでしょう。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8714/19792)
回答No.2
- chie65536(@chie65535)
- ベストアンサー率44% (8714/19792)
回答No.1
お礼
有難うございます。 例えばp2に200と入っていて、そこから3つ進めると203になりますが、そこは「f」なのでp2は「f」になるのでは?と思っていたのでおかしくなっていました。 その理屈で行くと200は「c」だけになってしまいます。 こんな事でつまずいていました。