字符串结果输出异常
#include <stdio.h>int main()
{
char name;
int i=0;
do
{
printf("请输入合法的数字:\n");
scanf("%s",&name);
}
while(name[++i]>=1&&name[++i]<=9);
printf("结果是:%s\n",name);
return 0;
}
输入整数存储到字符串中,遇到字符结束循环。
我输入两位数时,直接跳转到结果:如输入4,结果4;
输入两位数,正常运行,但再次输入一位整数,跳转结果:如输入47,48,1,输出47481。
求助,在输入一位整数时不跳转结果。 本帖最后由 liuzhengyuan 于 2020-8-4 10:23 编辑
#include <stdio.h>
int main()
{
char name;
int i = 0;
do
{
printf("请输入合法的数字:\n");
scanf("%c", &name);
} while (name[++i] >= '1' && name[++i] <= '9');
printf("结果是:%c\n", name);
return 0;
} liuzhengyuan 发表于 2020-8-4 10:21
试试?
emmmmmm照例跳转,后面还赠送了个乱码 122Ml 发表于 2020-8-4 10:23
emmmmmm照例跳转,后面还赠送了个乱码
这样?
#include <stdio.h>
int main()
{
char name;
int i = 0;
do
{
printf("请输入合法的数字:\n");
scanf("%c", &name);
} while (name[++i] >= '1' && name[++i] <= '9');
printf("结果是:%s\n", name);
return 0;
} liuzhengyuan 发表于 2020-8-4 10:21
这次连结果都不输出了....... liuzhengyuan 发表于 2020-8-4 10:24
这样?
#include <stdio.h>
int main()
{
char name;
int i=0;
do
{
printf("请输入合法的数字:\n");
scanf("%d",&name);
}
while(name>=1&&name<=9);
printf("结果是:%s\n",name);
return 0;
}
用了这个代码,可以满足一位数输入时循环的要求了,但是输入字符,结果就会不输出 %s 是字符串格式化,取址的话,数组名就可以 ggsdddup 发表于 2020-8-4 10:32
%s 是字符串格式化,取址的话,数组名就可以
scanf("%s",name);
无法做到循环,结果一次性输出 本帖最后由 baige 于 2020-8-4 10:42 编辑
用do while会存储到字符
#include <stdio.h>
int main()
{
char name;
int i=0;
printf("请输入合法的数字:\n");
while(1){
scanf("%c",&name);// name 用%c;
if(name<'0'||name>'9'||i>=49)break; // 当遇到不是0-9或字符数组已满 退出循环
++i;
}
name = '\0'; // 为数字之后添加字符串结尾'\0'
printf("结果是:%s\n",name);
return 0;
} 你倒是说说你的代码要干嘛啊 122Ml 发表于 2020-8-4 10:31
用了这个代码,可以满足一位数输入时循环的要求了,但是输入字符,结果就会不输出
因为输入完字符按下回车(\n)时,程序会把 \n 也当成输入的字符,得想个办法把(\n)去掉{:5_100:}
现在这个程序可以做到一起输入了
#include <stdio.h>
int main()
{
char name;
int i = 0, temp;
do
{
printf("请输入合法的数字:\n");
scanf("%c", &name);
} while (name >= '1' && name <= '9');
name = '\0';
printf("结果是:%s\n", name);
return 0;
} 永恒的蓝色梦想 发表于 2020-8-4 10:38
你倒是说说你的代码要干嘛啊
输入整数存储到字符串中,遇到字符结束循环。只存储整数 liuzhengyuan 发表于 2020-8-4 10:38
因为输入完字符按下回车(\n)时,程序会把 \n 也当成输入的字符,得想个办法把(\n)去掉
...
他是遇到字符退出循环,你这个程序字符也会存储, baige 发表于 2020-8-4 10:40
他是遇到字符退出循环,你这个程序字符也会存储,
所以我加了一个 name[ i] = '\0' 想要取消掉字符 都绝望了,各种代码不是直接输出,就是不输出,或者输出乱码
122Ml 发表于 2020-8-4 10:41
都绝望了,各种代码不是直接输出,就是不输出,或者输出乱码
这个终于正常点了,但是还是有 BUG,还在调试中……
#include <stdio.h>
int main()
{
char name;
int i = 0, temp;
do
{
printf("请输入合法的数字:\n");
scanf("%c\n", &name);
} while (name >= '1' && name <= '9');
name = '\0';
printf("结果是:%s\n", name);
return 0;
} liuzhengyuan 发表于 2020-8-4 10:41
所以我加了一个 name[ i] = '\0' 想要取消掉字符
例如输入123a你的代码输出123a #include <stdio.h>
int main()
{
char name;
int i=0;
printf("请输入合法的数字:\n");
while(1){
scanf("%c",&name);// name 用%c;
if(name<'0'||name>'9'||i>=49)break; // 当遇到不是0-9或字符数组已满 退出循环
++i;
}
name = '\0'; // 为数字之后添加字符串结尾'\0'
printf("结果是:%s\n",name);
return 0;
}
楼主这个可以运行吗 baige 发表于 2020-8-4 10:44
例如输入123a你的代码输出123a
我在楼上修改了一下…… baige 发表于 2020-8-4 10:44
楼主这个可以运行吗
{:10_266:}一次性程序,输入1,直接结束循环