C语言代码运行持续出现null值问题求助
C代码问题排查结果
错误原因
scanf格式符错误:当前使用的"[^\n]*c"缺失前置占位符标识%,无法匹配输入内容;同时数组名jojo本身就是首地址,不需要额外加取地址符&。该问题导致输入内容没有被正确写入jojo数组,数组内为初始垃圾值。printf参数缺失:%s占位符需要传入对应的字符串地址作为参数,原代码仅写了格式字符串,没有传入jojo,导致printf读取到无效内存地址,输出空值。
修正后代码
#include<stdio.h> #include<string.h> int main () { char jojo[100]; printf("name: "); // 加%99限制读取长度,避免缓冲区溢出风险 scanf("%99[^\n]", jojo); // 补充jojo作为%s占位符的对应参数 printf("Happy Birthday to %s.\n", jojo); printf("\n"); return 0; }
内容的提问来源于stack exchange,提问作者Faust
相关产品推荐
相关产品推荐

