台灣最大程式設計社群網站
線上人數
2357
 
會員總數:245979
討論主題:189557
歡迎您免費加入會員
討論區列表 >> C/C++ >> 自製搜尋法問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
自製搜尋法問題
價值 : 110 QP  點閱數:493 回應數:1
樓主

Exagger
門外漢
0 2
10 0
發送站內信




小弟於今日寫了一個程式,是關於讀檔後搜尋檔內是否有與我所輸入的字串相符的小程式,
但是遇上了一個瓶頸:

<pre lang="c#">
請輸入程式碼
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <windows.h>
#define SIZE 150

char var[SIZE];

void read_maintxt();
void setColor(int color);

char *w;

int main()
{
read_maintxt();

char C_wanttocheck[SIZE];

while(1)
{
printf("請輸入要找的文字:");
scanf("%s",&C_wanttocheck);

fgets(var, SIZE, stdin);
fgets(C_wanttocheck, SIZE, stdin);

C_wanttocheck[strlen(C_wanttocheck) - 1] = '\0'; // 去除最後的換行字元

w = strstr(var, C_wanttocheck); //strstr()函式;尋找雙方相同處

if(w == NULL)
{
printf("找不到,或是您打錯了\n");
}
else
{
setColor(242);

printf("找到了!在%d的位置\n", (w - var) - '0' );
}

printf("\n");

setColor(7);

}

system("pause");
return 0;
}

void read_maintxt()
{
char filename[10];
FILE *fp;
int i;

printf("請輸入本文檔名檔名(包括副檔名):");
scanf("%s",&filename);

fp = fopen(filename,"r");

if(fp == NULL) printf("讀檔失敗或你沒這個檔\n");
else
{
printf("\n");

i = 0;

while(!feof(fp)) //feof指end of file
{
fscanf(fp,"%c",&var[i]);
printf("%c",var[i]);
i++;
}

printf("\n");
}

fclose(fp);
}

void setColor(int color)
{
HANDLE hConsole;
hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsole,color);
}

如上,執行後在搜尋時卻只回傳相同的數字,再加上小弟時在不怎麼會,
煩請各位高手指教,多謝!!

搜尋相關Tags的文章: [ 搜尋法 ] ,
本篇文章發表於2016-11-29 12:26
1樓
回應

建中
檢舉此回應
我把你的程式碼整理成Visual C++ 2010可以讀取的格式,
這裡用到的技巧是加上 include "stdafx.h"敘述,
再用int _tmain(int argc, _TCHAR* argv[]) 取代int main()就可以跑了。
以下是整理好的程式碼可以跑了,
初步看起來,strstr()並沒有你要的功能,
建議你用別的函數來取代strstr()。



本篇文章回覆於2016-12-09 00:49
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.