我是大一新生,求前辈们指教~~

#include
#define ai
int main(void)
{
scanf("%s",&"ai");
printf("%s","ai");
} 想把输入的内容赋予ai并输出,但输出的都是ai,最后一句用单引号代替双引号就是segmentation fault 想知道为什么,怎么改能调试成功?

0

5个回答

首先ai应该做为一个变量定义
char ai[10]
然后做为输入的scanf应该这么用
scanf("%s",ai) //这里ai不用再加&,因为数组ai就为地址了,所以不用再加&取地址。
输出的时候应该是
printf(“%s”,ai)

0
fire57
杯酒笑离殇 谢前辈指点,大概懂了一点点,至今也就上了四节课,看来是我太急了,感觉很有趣,以后有问题还望不吝赐教。
接近 4 年之前 回复
q467933088
BlueBlood 回复杯酒笑离殇: char ai 定义的是ai这样的一个字符变量,char ai[10]定义的是10个元素的数组变量。我不知道你现在有没有开始接触,这些都是基础必须要搞明白的
接近 4 年之前 回复
q467933088
BlueBlood 回复杯酒笑离殇: 首先define是宏定义,不能定义变量的。char ai[10] 这样才是对于变量的定义,这里是定义了一个ai的数组,对于数组而言ai就是指向一个地址的,所以在使用scanf的时候不用再加“&”这个区地址符了
接近 4 年之前 回复
fire57
杯酒笑离殇 先前用define定义了ai不能直接使用还早加符号是为什么? 而char ai[10]就可以直接使用不用加符号又是为什么?
接近 4 年之前 回复
fire57
杯酒笑离殇 三克油 果然可以 有意思 感觉要学的有好多 希望别嫌我问题多啊 能否char ai 这样定义能的话与char ai[10]有什么区别?
接近 4 年之前 回复

首先,“ai”这是个字符串,你这么来当然是输出ai,改为单引号是要包含字符的,显然不行

0
fire57
杯酒笑离殇 不是很懂改为单引号后的问题 define能这样用么? 主体不变怎么样改动可以达到输出被赋予输入的内容?
接近 4 年之前 回复

#define a b
的意思是下面代码中的a替换为b。。你就写一个#define ai 是没用的。另外你要是刚开始学,至少分清楚变量和常量。。。

0
Braum
Braum 回复杯酒笑离殇: #define一般用来替换需要全局使用的常量,比如100辆车,一般写作#define CAR_NUM 100,这样下面的代码需要用到这个变量的时候既可以使用100也可以别人看到这段代码更容易阅读,比你直接写个100会好很多。后面出现的a的确可以代替b,char a就是一个字符变量。
接近 4 年之前 回复
fire57
杯酒笑离殇 是不是说#define a b后a所代表内容即为b所代表内容且是一个常量,后面出现的a可当b所代表内容使用切不需要在加符号? 而char a定义的是一个变量,且可能为一个字符变量?
接近 4 年之前 回复

好学是值得鼓励的,书看到后面很多问题就一通百通了..

0

这个数组地址的问题,初学者经常写作,希望大家多多注意

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!