天心少年 发表于 2022-2-24 16:11:19

为什么用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:19:18

本帖最后由 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

yzzc 发表于 2022-2-25 16:16:52

#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]
查看完整版本: 为什么用for循环输入字符数组,单个输入字符,却只输入了三个字符?