我希望打印字符串直到字符(' e')到来 我试过的代码: -
#include <stdio.h>
int main() {
int a,i,x;
char b[10];
char ch;
//enter input string
for(i=0;i<10;i++)
scanf("%c",&b[i]);
for(i=0;i<10;i++)
if(b[i]!='e')
printf("%c",b[i]);
return 0;
}
Input:abcdefghij
Actual output:abcdfghij
Desired output:abcd
Question :
我哪里错了?将break
放在if block
里面会在这里工作吗?
答案 0 :(得分:3)
如果你想使用scanf,那就更清洁了。
#include <stdio.h>
int main()
{
char b[101];
scanf("%100s", b);
printf("%s\n", b);
return(0);
}
甚至更好。
#include <stdio.h>
#define MAX_LENGTH 100
int main()
{
char b[MAX_LENGTH+1]; // add 1 for the terminating zero
scanf("%100s", b);
printf("%s\n", b);
return(0);
}
这个使用fgets来读取整行。
#include <stdio.h>
#define MAX_LENGTH 100
int main()
{
char b[MAX_LENGTH];
fgets(b, MAX_LENGTH, stdin);
printf("%s", b);
return(0);
}
答案 1 :(得分:2)
如何打印字符串直到极限?
应该做的代码是使用fgets()
。
避免使用scanf()
。是否容易使用错误。
#include <stdio.h>
#include <string.h>
int main() {
char b[100];
if (fgets(b, sizeof b, stdin)) {
// If code needs to lop off the potential \n at the end
b[strcspn(b, "\n")] = '\0';
printf("%s\n", b);
}
return 0;
}
高级问题包括如何处理过长的输入行和错误处理 - 此处未显示。
答案 2 :(得分:1)
有几个错误!
如果您要从0初始化循环,则需要将条件设置为i<100
。
将格式说明符更改为%s
。
将您的IF语句更改为if(b[i]!='\0')
。
答案 3 :(得分:1)
这是你需要做的事情
#include <stdio.h>
int main()
{
int a,i,x;
char b[10];
char ch;
//enter input string
for(i=0;i<10;i++)
{
scanf("%c",&b[i]);
}
for(i=0;i<10;i++)
{
if(b[i]=='e')
{
break;
}
}
return 0;
}
RE
答案 4 :(得分:0)
#include <stdio.h>
int main()
{
int i;
char b[10];
for(i=0;i<10;i++)
{
scanf("%c",&b[i]);
}
for(i=0;i<10;i++)
{
if(b[i]=='e')
{
break;
}
printf("%c",b[i]);
}
return 0;
}