我有一个明显容易的问题,但我无法得到我做错了什么.我有一个代码可以在控制台中测试60个字符的输入文本,如果在该文本中出现"恐怖"字样,它将提示消息"可疑文本",当该字出现时,它将显示"没有任何可疑" .进入"模式"的文本应在输入单词"完成"时结束.这似乎是我的问题,因为我的while循环只是不想结束.
任何提示?
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
int start_with (char *sir1, char *sir2)
{
int i,j,k;
int len_sir2=strlen(sir2);
char sir3[60]="";
for (i=0;i<=len_sir2;i++)
{
sir3[i]=sir1[i];
}
k=(strcmp(sir2,sir3)) ? 0:1;
return k;
}
int main()
{
char *txt1;
char sir1[60]="", sir2[60]="terorist", sir_test[60]="done";
int i,j,lensir1, contor=0,buf_de_la=0, buf_la;
while (sir1!=sir_test)
{
printf("Enter desired text and press ENTER \n");
gets(sir1);
printf("\n");
buf_la=strlen(sir1);
char *txt1="Nothing suspect";
while (buf_de_la<buf_la-7)
{
char sirbuf[60]="";
j=buf_de_la;
for (i=0;i<=7;i++)
{
sirbuf[i]=sir1[j];
j=j+1;
}
if (start_with(sirbuf,sir2)==1)
{
txt1="SUSPECT text entered!";
break;
}
buf_de_la=buf_de_la+1;
}
printf("%s\n",txt1);
getch();
system("cls");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Nat*_*pel 10
你应该strcmp像这样比较使用C风格的字符串
while (strcmp(sir1, sir_test) != 0)
Run Code Online (Sandbox Code Playgroud)
发生这种情况是因为当你这样做时sir1!=sir_test,你实际测试的是两个字符数组是否都指向内存中的相同地址,这是不正确的,因为它们是位于两个不同内存地址的两个不同的字符数组.
相反,你想要做的是比较每个变量内存空间中包含的字符,这就是strcmp:它逐字符地比较,直到找到空终止字符.
而不是while (sir1!=sir_test),试试这个:while (strcmp(sir1,sir_test)).strcmp,strcmpi等是用于字符串比较的正确功能.它们在string.h头文件下声明.
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |