[英]Comparing two strings using strtok()
我需要比較兩個文本文件中的字符串。 當使用分離字符串strtok()
對於文件),我有一個問題,同時指句子兩個文件,使用strtok()
因為它們發生碰撞。
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main()
{
FILE *fp,*fp1,*fp2;
fp=fopen("inp1.txt","r");
fp1=fopen("inp2t.txt","r");
int f;
char *a,*b,*chk;
char buffer[500],buf[5000];
while(fgets(buf,5000,fp1));
{
chk= (char *)strtok (buf," ");
while(chk!=NULL)
{
rewind(fp);
f=0;
while(fgets(buffer,500,fp))
{
a= (char *) strtok(buffer,"\t");
b= (char *) strtok(NULL,"\n");
if(stricmp(a,chk)==0)
{
printf("%s",b);
printf(" ");
f=1;
}
}
if(f==0)
{
printf("%s",chk);
printf(" ");
}
chk= (char *) strtok(NULL," ");
}
}
fclose(fp);
fclose(fp1);
getch();
return 0;
}
如何修復此代碼,以便能夠從兩個輸入文件中提取令牌?
strtok()使用全局內部值,這將發生沖突。 使用strtok_s()可以防止這種情況,因為該函數采用了一個引用變量,該變量會將兩個實例分開。
strtok
使用指向要解析的字符串的靜態指針,因此在任何給定時間只能激活該字符串一次。
我可能只會使用:
char buffera[5000];
char bufferb[5000];
fscanf(fp, "%4999s", buffera);
// ...
fscanf(fp, "%4999s", bufferb);
strtok具有記住最后位置的內部狀態。 strtok_r()是strtok()的可重入版本。 檢查平台上是否可用並使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.