我试图创建一个基于C的字符串菜单,用户输入一个命令,然后运行一个代码块。
无论我做什么,条件永远不会成立:
char *input= ""; fgets(input, 50, stdin); printf("%s",input); printf("%d",strcmp( input,"arrive ")); if(strcmp( input,"arrive ")==0){....
我是相当新的c,我发现字符串真的很烦人。
我究竟做错了什么?
注意:当前代码崩溃了我的程序:(
为什么strcmp总是返回非0:
只有当字符串相同时, strcmp
才会返回0。 至于为什么它总是评价不同。 这是因为fgets在null终止之前将换行符放在输入缓冲区的末尾。
/*Will print 0 if you type in arrive*/ printf("%d",strcmp( input,"arriven"));
为什么你的程序崩溃:
另一个问题是input
应该是char缓冲区。 像这样: char input[1024];
目前你有input
作为指向空终止字符串的指针(这是只读内存)
友情提示:
也不要将null终止