nahongyan1997 发表于 2020-8-14 13:05:34

新手的第二个程序

我想做一个程序,就是提示输入字符,按回车以后把输入的字符打印出来,可是我的代码一执行就崩溃了,求解。

代码:
#include <stdio.h>

int main(){
        char a;
       
        printf("请输入任意字符:");
        scanf("%s",&a);
       
        printf("%s",a);
       
        return 0;
}

nahongyan1997 发表于 2020-8-14 13:06:57

应该怎样修改呢

Twilight6 发表于 2020-8-14 13:07:50

nahongyan1997 发表于 2020-8-14 13:06
应该怎样修改呢


这样试试看呗:

#include <stdio.h>

int main(){
      char a;

      printf("请输入任意字符:");
      scanf("%s",&a);

      printf("%c",a);

      return 0;
}

永恒的蓝色梦想 发表于 2020-8-14 13:12:23

正确代码如下:#include <stdio.h>

int main(){
      char a;
      
      printf("请输入任意字符:");
      scanf("%c",&a);
      
      printf("%c",a);
      
      return 0;
}

nahongyan1997 发表于 2020-8-14 13:12:58

Twilight6 发表于 2020-8-14 13:07
这样试试看呗:

%c 只能打印出一个,我要的是把我输入的所有的东西原封不动的打印,
就像 Python 里 print(input()) 的效果一样。




你怎么跑 c语言 版块来了。

永恒的蓝色梦想 发表于 2020-8-14 13:13:20

建议写法:#include <stdio.h>

int main() {
      printf("请输入任意字符:");
      putchar(getchar());

      return 0;
}

nahongyan1997 发表于 2020-8-14 13:14:43

永恒的蓝色梦想 发表于 2020-8-14 13:13
建议写法:

你这个也是只打印出了一个字符

sunrise085 发表于 2020-8-14 13:14:50

char的格式化字符是%c
你写的%s是字符串的格式化字符
下面给出常用的类型数据对应的格式化字符
int :%d       char : %c   float : %f   等等
#include <stdio.h>

int main(){
      char a;
      
      printf("请输入任意字符:");
      scanf("%c",&a);
      
      printf("%c",a);
      
      return 0;
}

永恒的蓝色梦想 发表于 2020-8-14 13:14:59

nahongyan1997 发表于 2020-8-14 13:12
%c 只能打印出一个,我要的是把我输入的所有的东西原封不动的打印,
就像 Python 里 print(input()) 的 ...

#include<stdio.h>


int main() {
    char str;

    fgets(str, sizeof(str) / sizeof(char), stdin);
    fputs(str, stdout);

    return 0;
}

永恒的蓝色梦想 发表于 2020-8-14 13:15:33

nahongyan1997 发表于 2020-8-14 13:14
你这个也是只打印出了一个字符

看 9L,满意请给个最佳哦{:10_297:}

nahongyan1997 发表于 2020-8-14 13:16:24

永恒的蓝色梦想 发表于 2020-8-14 13:14


这回直接就结束了都没让我输入

nahongyan1997 发表于 2020-8-14 13:16:55

sunrise085 发表于 2020-8-14 13:14
char的格式化字符是%c
你写的%s是字符串的格式化字符
下面给出常用的类型数据对应的格式化字符


我写的是错的,我就是不会瞎写了一段

永恒的蓝色梦想 发表于 2020-8-14 13:17:15

nahongyan1997 发表于 2020-8-14 13:16
这回直接就结束了都没让我输入

有没有提示不都一样吗……#include<stdio.h>


int main() {
    char str;

    printf("请输入任意字符:");
    fgets(str, sizeof(str) / sizeof(char), stdin);
    fputs(str, stdout);

    return 0;
}

nahongyan1997 发表于 2020-8-14 13:19:08

本帖最后由 nahongyan1997 于 2020-8-14 13:21 编辑

永恒的蓝色梦想 发表于 2020-8-14 13:17
有没有提示不都一样吗……

不是提不提示,是程序直接运行结束了,都出现按任意键结束的提示了



而且你这样我输入的字符串的长度不是被限制住了吗(其实也可以){:10_299:}

永恒的蓝色梦想 发表于 2020-8-14 13:20:19

nahongyan1997 发表于 2020-8-14 13:19
不是提不提示,是程序直接运行结束了,都出现按任意键结束的提示了

那就应该是栈溢出了,改成这样吧:#include<stdio.h>



char str;



int main() {
    printf("请输入任意字符:");
    fgets(str, sizeof(str) / sizeof(char), stdin);
    fputs(str, stdout);

    return 0;
}

永恒的蓝色梦想 发表于 2020-8-14 13:23:00

nahongyan1997 发表于 2020-8-14 13:19
不是提不提示,是程序直接运行结束了,都出现按任意键结束的提示了




你难道要自动扩容?不行,这得加钱{:10_256:}
页: [1]
查看完整版本: 新手的第二个程序