c语言获取和检查字符串
get and check Strings in c language
我尝试编写程序来扫描用户输入的字符串并检查用户输入的内容,如果正确则执行某项操作,如果不正确则执行其他操作。
我写的代码是这样的:
#include<stdio.h>
#include<conio.h>
int main()
{
char string[20];
printf("Enter a sentence : ");
scanf("%s",&string);
if(strcmp(string,"what's up")==0)
printf("\nNothing special.");
else
printf("\nYou didn't enter correct sentence.");
getch();
return 0;
}
但它不起作用 correct.I 认为因为程序无法识别 space 当它想要 scan.What 我应该怎么做?(我是 c 的新手, 所以请解释一下你做了什么。)
%s
格式说明符不能用于扫描带有 space 的字符串。
您需要使用fgets()
size_t n;
fgets(string,sizeof(string),stdin);
n = strlen(string);
if(n>0 && string[n-1] == '\n')
string[n-1] = '[=10=]';
PS: fgets()
自带一个换行符character.So你需要轻轻的去掉它如上图
您仍然可以使用 scanf,但像这样:
#include<stdio.h>
#include<conio.h>
int main()
{
char string[20];
printf("Enter a sentence : ");
scanf(" %[^\n]s",string);
if(strcmp(string,"what's up")==0)
printf("\nNothing special.");
else
printf("\nYou didn't enter correct sentence.");
getch();
return 0;
}
为了防止缓冲区溢出,可以这样写scanf(" %19[^\n]s",string);
可以使用getline1()函数获取整行如下图:
/* getline1: read a line into s, return length*/
int getline1(char s[],int lim)
{
int c, i;
for (i=0; i < lim-1 && (c=getchar())!=EOF && c!='\n'; ++i)
s[i] = c;
if (c == '\n') {
s[i] = c;
++i;
}
s[i] = '[=10=]';
return i;
}
lim 指定行的最大长度。
我尝试编写程序来扫描用户输入的字符串并检查用户输入的内容,如果正确则执行某项操作,如果不正确则执行其他操作。 我写的代码是这样的:
#include<stdio.h>
#include<conio.h>
int main()
{
char string[20];
printf("Enter a sentence : ");
scanf("%s",&string);
if(strcmp(string,"what's up")==0)
printf("\nNothing special.");
else
printf("\nYou didn't enter correct sentence.");
getch();
return 0;
}
但它不起作用 correct.I 认为因为程序无法识别 space 当它想要 scan.What 我应该怎么做?(我是 c 的新手, 所以请解释一下你做了什么。)
%s
格式说明符不能用于扫描带有 space 的字符串。
您需要使用fgets()
size_t n;
fgets(string,sizeof(string),stdin);
n = strlen(string);
if(n>0 && string[n-1] == '\n')
string[n-1] = '[=10=]';
PS: fgets()
自带一个换行符character.So你需要轻轻的去掉它如上图
您仍然可以使用 scanf,但像这样:
#include<stdio.h>
#include<conio.h>
int main()
{
char string[20];
printf("Enter a sentence : ");
scanf(" %[^\n]s",string);
if(strcmp(string,"what's up")==0)
printf("\nNothing special.");
else
printf("\nYou didn't enter correct sentence.");
getch();
return 0;
}
为了防止缓冲区溢出,可以这样写scanf(" %19[^\n]s",string);
可以使用getline1()函数获取整行如下图:
/* getline1: read a line into s, return length*/
int getline1(char s[],int lim)
{
int c, i;
for (i=0; i < lim-1 && (c=getchar())!=EOF && c!='\n'; ++i)
s[i] = c;
if (c == '\n') {
s[i] = c;
++i;
}
s[i] = '[=10=]';
return i;
}
lim 指定行的最大长度。