-2

私はこの次のプログラムを持っています

#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
char line1[30],line2[30],*chp;
puts("Enter line1:");
gets(line1);
puts("Enter Line2");
gets(line2);
chp=strstr(line1,line2);
if(chp)
printf("%s String is present in Given String",line2);
else
printf("%s String is not present in Given String",line2);
getche();
}

chp がこのプログラムのポインタであることは知っていますが、chp が 1 つのメモリ位置を格納することは疑わしいですが、文字列 (line2) のメモリ位置が chp ポインタに格納される方法については、プログラマーがこのプログラムを理解するのを手伝ってください。

4

4 に答える 4

1

strstr 関数は、s1 が指す文字列内で、s2 が指す文字列を検索します。s2 の s1 で最初に見つかった場所へのポインターを返します。

したがって、1 つのメモリ ロケーション、つまり line2 が line1 で見つかった場所へのポインター、それ以外の場合は nullのみを格納します。

于 2013-08-15T06:11:12.877 に答える
0
#include <stdio.h>
#include <string.h>
int main()
{
    char line1[30];
    char line2;                 // here is a char  not char []
    char *chp;
    puts("Enter line1:");
    fgets(line1,30,stdin);      // use fgets
    puts("Enter Line2");
    line2 = fgetc(stdin);
    chp=strchr(line1,line2);
    if(chp)
        printf("%s String is present in Given String",chp);
    else
        printf("%s String is not present in Given String",line2);
    return 0;
}
于 2013-08-15T06:38:54.097 に答える