char a="asdf" printf("%s",a) 为什么不对?

如题所述

因为char表示字符,用%c输出;char[]是字符串,用%s输出;当然char*也表示字符串,亦可用%s输出。
试比较以下代码:
char a[] = "asdf";
char b = 'c';
printf("%c\n", b);
printf("%s\n",a);
第一句输出c,第二句输出asdf.
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-13
char a="asdf" printf("%s",a)

char a="asdf"出错,a为char类型,只能表示一个char数据
printf("%s",a)出错,a为char类型,%s为输出字符串数据。

修改为
#include<stdio.h>
void main
{
char *a = "asdf";
printf("%s", a);
}本回答被提问者采纳
第2个回答  推荐于2017-09-23

    a的定义后面少了一个;符号,并且字符串需要开辟内存空间来存放

    定义字符串一般用数组存放,如char a[80]="asdf";或定义一个指针并用malloc函数开辟一段空间存放 如

    char *a;   a=(char *)malloc(sizeof(char));   a="efug";    printf("%s",a);

第3个回答  2011-12-22
char *a="asdf";
相似回答