C语言中如何读取和判断这样的字符串: 输入:abc defg 中间有空格; 把abc赋给v1,d

C语言中如何读取和判断这样的字符串:
输入:abc defg
中间有空格;
把abc赋给v1,defg赋给v2;
判断v1是否是“abc”;
是,输出0;不是,输出1;

直接用格式输入函数scanf();
 scanf("%s %s",v1,v2);两个%s之间加空格符,表示两个字符串以空格划分开。字符串比较可以直接调用函数strcmp(a,b);头文件为string.h。也可自己定义、编写函数进行比较

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-31
用strtok函数.
strtok(const char *str, const char *ch)
第一个是字符串,第二个是以那个字符做切割。

例子:
#include <stdio.h>
#include <string.h>
int main(void)
{
char x[] = "abc defg";
char *n = " ";//注意这里有个空格,就是你要用来分割的字符串
char *p;
char v1[]="";
char v2[]="";
p=strtok(x, n);
v1=v1+*p;
p = strtok(NULL, n);
v2=*p;
if(v1=="abc")
printf("%d",0);
else
printf("%d",1);

return 0;
}
strtok函数分解字符串为一组字符串。x为要分解的字符串,n为分隔符字符串。
首次调用时,x指向要分解的字符串,之后再次调用要把x设成NULL。 strtok在x中查找包含在n中的字符并用NULL('')来替换,直到找遍整个字符串。 char * p = strtok(x,";"); p = strtok(null,";"); 在调用的过程中,字串x被改变了,这点是要注意的。
从x开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。 所有n中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。本回答被提问者和网友采纳
第2个回答  2014-01-31
// FBD.cpp : 定义控制台应用程序的入口点。
//VS2012

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#define MAX_BUF_SIZE 200 //缓存区长度
int _tmain(int argc, _TCHAR* argv[])
{
char szInput[MAX_BUF_SIZE]={0};
char szV1[MAX_BUF_SIZE]={0};
char szV2[MAX_BUF_SIZE]={0};
gets_s(szInput);//获取输入
int k=0;
int i=0;
for(;i<MAX_BUF_SIZE;i++)
{
if (szInput[i]== ' ')//判断空格前有多少个字符
{
for(;k<i;k++)
{
szV1[k]=szInput[k];//把空格前的字符赋给v1
}
}
for(int x=0;x<i;x++)
{
szV2[x]=szInput[k+x];//把空格后的字符赋给v2
}
}
if(strcmp(szV1,"abc")==0)//判断
{
printf("1\n");
}
else
{
printf("0\n");
}
system("pause");
return 0;
}

觉得还算符合~

相似回答