乱码zzz 发表于 2020-5-9 08:37:46

字符串读取问题

为什么不能用scanf读取啊
程序运行不会报错,但却不能把输入的字符串重新输出

//目标效果:
输入:hello
输出:hello


#include <stdio.h>

int main(){
        char ch;
        int i = 0;
       
        for (; i < 123 ; i++){
                scanf("%c", ch);       
                if(ch == '\n') break;       
        }
        printf("%s", ch);
        return 0;
}

qiuyouzhi 发表于 2020-5-9 08:40:12

为啥要用for循环?
直接scanf("%s", ch);
然后输出ch就好了

liuzhengyuan 发表于 2020-5-9 08:40:50

#include <stdio.h>

int main(){
      char ch;
      int i = 0;
      
      for (; i < 123 ; i++){
                scanf("%c", &ch);      
                if(ch == '\n') break;      
      }
      printf("%s", ch);
      return 0;
}
#include <stdio.h>

int main(){
      char ch;
      int i = 0;
      
      scanf("%s", ch);
      printf("%s", ch);
      return 0;
}

永恒的蓝色梦想 发表于 2020-5-9 08:51:50

#include <stdio.h>

int main() {
    char ch;
    gets_s(ch);
    puts(ch);
    return 0;
}

KevinHu 发表于 2020-5-9 08:54:10

本帖最后由 KevinHu 于 2020-5-9 08:59 编辑

方法一:scanf不能输入'\n',可以用getchar(),字符串之后还要加上'\0'(字符串的结束符)

#include <stdio.h>

int main(){
      char ch;
      int i = 0;
      
      for (; i < 123 ; i++){
                ch = getchar();      
                if(ch == '\n'){
                        ch = '\0';
                        break;
                }      
      }
      printf("%s", ch);
      return 0;
}



方法二:直接输入

#include <stdio.h>

int main(){
      char ch;
      int i = 0;
      
      scanf("%s", ch);
      printf("%s", ch);
      return 0;
}

sunrise085 发表于 2020-5-9 09:03:28

有两处问题
#include <stdio.h>
int main(){
    char ch;
    int i = 0;
   
    for (; i < 123 ; i++){
            scanf("%c", &ch); //这里应该有&,scanf要给定变量的地址
            if(ch == '\n') break;      
    }
    ch='\0';//字符串结尾要写上结束字符'\0'
    printf("%s", ch);
    return 0;
}

sunrise085 发表于 2020-5-9 09:10:47

KevinHu 发表于 2020-5-9 08:54
方法一:scanf不能输入'\n',可以用getchar(),字符串之后还要加上'\0'(字符串的结束符)




scanf用%c是可以读取回车字符的
你的方法2也无法限定长度啊。
限定长度读取字符串一个用以下函数,该函数的长度(125)包含自动添加的字符串结尾符'\0'
#include <stdio.h>
int main(){
    char ch;
    int i = 0;
   
    fgets(ch, 125, stdin);
    printf("%s", ch);
    return 0;
}
页: [1]
查看完整版本: 字符串读取问题