當前位置:首頁 » 編程語言 » c語言在線性表中查找字元串
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言在線性表中查找字元串

發布時間: 2023-05-30 01:04:55

c語言中怎麼查找字元串數組中的某個字元

程序有誤,修改如下:

#include <stdio.h>

#include <string.h>

void main(){

char sh[20];

gets(sh);

for(int i=0;i<20;i++)

{

if(sh[i]='@')

{

printf("判斷出有字元@ ");

break;

}

if(sh[i]='')printf("無字元@ ");

}

}

(1)c語言在線性表中查找字元串擴展閱讀:

數組的使用規則:

1.可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。

2.只能給元素逐個賦值,不能給數組整體賦值。例如給十個元素全部賦1值,只能寫為:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:static int a[10]=1;請注意:在C、C#語言中是這樣,但並非在所有涉及數組的地方都這樣,資料庫是從1開始。

3.如不給可初始化的數組賦初值,則全部元素均為0值。

4.如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。例如:static int a[5]={1,2,3,4,5};可寫為:static int a[]={1,2,3,4,5};動態賦值可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。

網路-數組

㈡ C語言中如何查找字元串

用strstr這個函數 包含文件:string.h 函數名: strstr 函數原型:extern char *strstr(char *str1, char *str2); 功能:找出str2字元串在str1字元串中第一次出現的位置(不包括str2的串結束符)。 返回值:返回該位置的指針,如找不到,返喚塌跡回空指針。 源代碼: #include #include//調用string.h中的strstr函數 void main(){ char ch1[255]="abcde"; char ch2[100]="cd"; char* ch;//用於接受返回值 if((ch=strstr(ch1,ch2))==NULL){//說明沒有要找的和並字元串 printf("-1\衫盯n"); }else{//說明找到了那個字元串 printf("%d\n",ch-ch1+1);//cde的地址減去abcde的地址+1 } }

㈢ 編寫程序實現在一個字元串中查找指定的字元(請用c語言作答)

#include&lt;stdio.h&gt;

int main()

{

int i,index,count;

char a,ch,str[80];

scanf("%c ",&a);

i=0;

index=-1;

count=0;

ch=getchar();

for(i=0;ch!=' ';i++){

str<i>=ch;

count++;

ch=getchar();

}

for(i=0;i&lt;count;i++)

if(a==str<i>)

index=i;

if(index!=-1)

printf("index=%d",index);

else

printf("Not Found");

return 0;

}

(3)c語言在線性表中查找字元串擴展閱讀:

getchar()用法:

getchar()函數的作用是從計算機終端(一般為鍵盤)輸入一個字元。getchar()函數只能接收一個字元,其函數值就是從輸入設備得到的字元。

例:

#include&lt;stdio.h&gt;

int main(void)

{

int c;

/*Note that getchar reads from stdin and

is line buffered;this means it will

not return until you press ENTER.*/

while((c=getchar())!=' ')

printf("%c",c);

return 0;

}

註:可以利用getchar()函數讓程序調試運行結束後等待編程者按下鍵盤才返回編輯界面,用法:在主函數結尾,return 0;之前加上getchar();

㈣ c語言如何查找字元串

C語言中的標准函數庫中的strchr()函數可以實現查找字元串中的某個字元。

C語言strchr()函數:

查找某字元在字元串中首次出現的位置

頭文件:#include <string.h>

strchr() 用來查找某字元在字元串中首次出現的位置,其原型為:

char * strchr (const char *str, int c);

【參數】str 為要查找的字元串,c 為要查找的字元。

strchr() 將會找出 str 字元串中第一次出現的字元 c 的地址,然後將該地址返回。

注意:字元串 str 的結束標志 NUL 也會被納入檢索范圍,所以 str 的組後一個字元也可以被定位。

【返回值】如果找到指定的字元則返回該字元所在地址,否則返回 NULL。

返回的地址是字元串在內存中隨機分配的地址再加上你所搜索的字元在字元串位置。設字元在字元串中首次出現的位置為 i,那麼返回的地址可以理解為 str + i。

提示:如果希望查找某字元在字元串中最後一次出現的位置,可以使用 strrchr() 函數。

㈤ c語言查找字元串

字元串在存儲上類似字元數組,所以它每一位的單個元素都是可以提取的,如s=「abcdefghij」,則s[1]=「b」,s[9]="j",而字元串的零位正是它的長度,c語言查找字元串方法為:

1、首先,定義一個字元數組變數,可以這么寫。

注意事項:

盡管形式字元串可以有任意(但有限)的長度,實際語言的字元串的長度經常被限制到一個人工極大值。有兩種類型的字元串數據類型: 「定長字元串」,它有固定的極大長度並且不管是否達到了這個極大值都使用同樣數量的內存。

㈥ C語言文件中字元串的查找與替換

用"rb" open, 用 fread 讀, 用 fwrite 寫.
記錄地點 用 fgetpos.

下面程序例子是按你的原來題意,找目標字串,輸出用替代字.直接用文件操作,不開單元存放文件.

輸入文件 a.txt 輸出文件 tmp.txt

至於你的新要求,給你提示記錄地點的方法.你可以rewind(fin),從頭一個字一個字讀,讀一個輸出一個,讀到的位置等於POS[i]-80時,讀80個字但不輸出,這就去掉了80個字.
例如找到的POS[]共NN個。
#define buff_size 1024
long int n,n1,n2,i,j,k;
char *buff;
buff=(char*) malloc(buff_size * sizeof(char));
rewind(fin);
for(k=0;k<NN;k++){
if (k==0) {n=POS[k]-80;} else {n=POS[k]-POS[k-1]-80;};
n1 = n / buff_size; n2 = n % buff_size;
if (n1 >0) for (i=0;i<n1;i++){
fread(buff,sizeof(char),buff_size,fin);
fwrite(buff,sizeof(char),buff_size,fout);
};
if (n2 > 0) {fread(buff,sizeof(char),n2,fin);
fwrite(buff,sizeof(char),n2,fout);
};
fread(buff,sizeof(char),80,fin);
for (i=0;i<80;i++) buff[i]='0'; buff[80]='\0';
fwrite(buff,sizeof(char),80,fout);
} ; end for k
這里請自己寫 讀最後一段,無需改零,讀一個字,輸出一個字,直到EOF.
-----------------
#include <stdio.h>
#include <stdlib.h>

void main (int argc, char *argv[])
{
FILE *fin,*fout;
char namein[72]="a.txt";
char nameout[72]="tmp.txt";
char target[120],tidai[120];
char work[120];
int L1,L2,i,k=0;
int numread;
fpos_t pos;
fpos_t POS[100];

printf("Enter target string: ");
scanf("%s",&target[0]);
L1 = strlen(target);
printf("Enter replace string: ");
scanf("%s",&tidai[0]);
L2 = strlen(tidai);

if ( (fin = fopen(namein,"rb") ) == NULL ) {
printf("\007Cann't open input file: %s ", namein);exit(1);
};

if ( (fout = fopen(nameout,"wb") ) == NULL ) {
printf("\007Cann't open temp work file: %s ", nameout);exit(1);
};

Lab1:
numread = fread( work, sizeof( char ), L1, fin );
if (numread < L1) {
// fwrite( work, sizeof( char ), numread, fout );
goto done;
};
if ( strncmp(work,target,L1) == 0 ){
// fwrite( tidai, sizeof( char ), L2, fout );
if( fgetpos( fin, &pos ) != 0 ) perror( "fgetpos error" );
else { POS[k] = pos-L1; k=k+1;};

goto Lab1;
};

Lab2:
// fwrite( &work[0], sizeof( char ), 1, fout );
for (i=0;i<L1-1;i++) work[i]=work[i+1];
fread( &work[L1-1], sizeof( char ), 1, fin );
if (feof(fin)) {
// fwrite( &work[1], sizeof( char ), L1-1, fout );
goto done;
};
if ( strncmp(work,target,L1) == 0 ){
// fwrite( tidai, sizeof( char ), L2, fout );
if( fgetpos( fin, &pos ) != 0 ) perror( "fgetpos error" );
else { POS[k] = pos-L1; k=k+1;};
goto Lab1;
} else {goto Lab2;};

// 新述 rewind(fin); 那部分程序語句插在這里,聲明放前面

done: fclose(fin);fclose(fout);
printf("output in %s\n",nameout);
for (i=0;i<k;i++){
printf("%ld \n",(long int) POS[i]);
}
exit(0);
}

㈦ 用C語言編寫一個從普通文本字元串中查找給定字元串(關鍵詞)的程序。(急,求真大神解答)

問題是這樣:C語言編寫函數int fun(char *s,char *c), 函數的功能是查找母串s中,字串c出現的次數.
答案是這樣:
#include<stdio.h>
#include<string.h>
int fun(char*s,char*c)
{
int i=0,j=0,k,n=strlen(c),a=0;
while(s[i])
{
if(s[i]==c[j])
{ for(k=1;(s[i+k]&&c[i+k])&&(s[i+k]==c[j+k]);k++);
if(k==n)
a++;
i+=n;
}
else
i++;
}
return a;
}
void main()
{
char s[40],c[20];
int m=0;
gets(s);
gets(c);
m=fun(s,c);
printf("%d\n",m);
}
你把它改為文件不就行了!你也是知道的演算法思想是一樣的!