为什么用for循环输入字符数组,单个输入字符,却只输入了三个字符?
#include<stdio.h>#include<string.h>
int main()
{
char str1;
char str2;
int i;
printf("请输入字符串1:");
for(i=0;str1!='\0';i++)
{
scanf("%c",&str1);
if(str1>='a'&&str1<='z') str1-=32;//若有小写字母,改大写
}
printf("%s\n",str1);//检查是否输入了字符串,实际运行显示只输入了三个字符,为什么? 我不止输入了三个字母比如abcdefgh这些,每输入一个字符之间也没有按回车
getchar();
int j;
printf("请输入字符串2:");
for(j=0;str2!='\0';j++)
{
scanf("%c",&str2);
if(str2>='a'&&str2<='z') str2-=32;//若有小写字母,改大写
}
printf("%s\n",str2);//这里更是一点都没有输入
strcat(str1,str2);//合并字符串1和2
printf("%s",str1);//输出最终字符串,只显示了最初输入字符串1的那三个字符
return 0;
} 本帖最后由 jhq999 于 2022-2-25 11:21 编辑
int main()
{
char str1;
char str2;
int i;
printf("请输入字符串1:");
i=0;
do{
scanf("%c",&str1);
if(str1>='a'&&str1<='z') str1-=32;//若有小写字母,改大写
}while (str1!='\n');
str1='\0';
printf("%s\n",str1);//检查是否输入了字符串,实际运行显示只输入了三个字符,为什么? 我不止输入了三个字母比如abcdefgh这些,每输入一个字符之间也没有按回车
int j;
printf("请输入字符串2:");
j=0;
do{
scanf("%c",&str2);
if(str2>='a'&&str2<='z') str2-=32;//若有小写字母,改大写
}while (str2!='\n');
str2='\0';
printf("%s\n",str2);//这里更是一点都没有输入
strcat(str1,str2);//合并字符串1和2
printf("%s",str1);//输出最终字符串,只显示了最初输入字符串1的那三个字符
return 0;
}
请输入字符串1:abcd
ABCD
请输入字符串2:efgf
EFGF
ABCDEFGF
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
char str1 , str2 ;
int i,j;
printf("请输入字符串1:");
scanf("%c", &str1);
for (i = 0; str1 != '\n'; )
{
if (str1 >= 'a' && str1 <= 'z') str1 -= 32;//若有小写字母,改大写
scanf("%c", &str1[++i]);
}
str1 = 0;
printf("%s\n", str1);//检查是否输入了字符串,实际运行显示只输入了三个字符,为什么? 我不止输入了三个字母比如abcdefgh这些,每输入一个字符之间也没有按回车
printf("请输入字符串2:");
scanf("%c", &str2);
for (j = 0; str2 != '\n'; )
{
if (str2 >= 'a' && str2 <= 'z') str2 -= 32;//若有小写字母,改大写
scanf("%c", &str2[++j]);
}
str2 = 0;
printf("%s\n", str2);//这里更是一点都没有输入
strcat(str1, str2);//合并字符串1和2
printf("%s", str1);//输出最终字符串,只显示了最初输入字符串1的那三个字符
return 0;
}
你原来的程序for循环都进不去输入数据也没有意义啊
页:
[1]