小编Ami*_*sht的帖子

使用fgets和strstr的意外结果

我提出以下用于搜索字符串的两个代码S2在串S1,如果S2中发现S1在那里发现匹配被打印和位置的,则地址 S1应该从匹配的位置被打印到的最后一个字符S1.如果s1 ="上帝是伟大的"并且s2 ="是"那么应该打印匹配的地址以及"很棒".

CODE 1:
#include<stdio.h>
#include<string.h>

void main()
{
    char s1[80]="god is great",s2[10]="is";
    char *searchptr;
    searchptr=strstr(s1,s2);
    printf("%p\n%p\n",searchptr,s1);
    sprintf(s1,"%s",searchptr);
    puts(s1);
}

CODE 2:
#include<stdio.h>
#include<string.h>

void main()
{
    char s1[80],s2[10];
    char *aptr;
    printf("%s\n%s\n","enter a line","enter string to be searched");
    fgets(s1,80,stdin);
    printf("\n");
    fgets(s2,10,stdin);
    aptr=strstr(s1,s2);
    printf("%p\n,aptr);
    sprintf(s1,"%s",aptr);
    puts(s1);
}
Run Code Online (Sandbox Code Playgroud)

在第一个代码中,我已经初始化了字符串及其工作,但第二个代码给出了意想不到的结果.它给出了匹配的地址在每种情况下(我已经尝试过)aptr = 0000000.使用fgets有什么不对,因为在第二个代码我想从键盘输入?

c

2
推荐指数
1
解决办法
520
查看次数

标签 统计

c ×1