【发布时间】:2022-09-28 14:52:53
【问题描述】:
我正在用c编写一个简单的程序,打印数组的所有元素。数组是
char op[2][50] = {\"option1\", \"option2\"};
该程序是
int main(int argc, char * argv[])
{
char spaces[6] = \" \";
int choice;
char op[2][50] = {\"option1\", \"option2\"};
printf(\"\\n\\n\\t=========== OPTIONS ===========\\n\\n\\t\");
for (int i;i<sizeof(op)/sizeof(op[0]);i++) {printf(\"%s[%d]: %s\\n\\t\",spaces,i+1,op[i]);}
printf(\"\\n\\t\\t%s[?]: \",spaces);
scanf(\"%d\",&choice);
if (choice==1) {firstFunction();} //i\'ve declared this function, but here isn\'t important
return 0;
}
所以,问题是选项未打印. 输出:
=========== VIDEO TOOLS ===========
[?]:
问题本质上是 if 语句,因为我尝试在上面和下面添加其他 printf 并且它们可以工作。此外,该 if 语句在对程序进行一些更改之前起作用,所以问题可能是其他代码行(?)
我是 c 的初学者,所以请不要暴露复杂的解决方案。谢谢
-
i的值是多少? -
spaces的大小太小,无法容纳您希望它容纳的字符串。请记住,C 中的字符串确实被称为空终止字符串。这意味着一个六个字符的字符串确实需要七个空间,才能容纳终止符。删除spaces的尺寸规格以解决该问题:char spaces[] = \" \"; -
让它成为一种习惯结尾您的 printf 行与
\\n而不是从它们开始。因为\\n不仅改变了行,它还可能刷新某些系统上的标准输出。未能刷新标准输出可能会导致输出以奇怪的顺序出现或丢失。 -
i\'m a beginner with c... 那你还有时间不习惯使用(并且浪费时间去追逐使用带来的问题)scanf( )快跑!弄清楚如何使用fgets()并处理它可以提供的“一次一行”输入。不要偷懒...因为scanf()的滥用和误用导致的SO问题太多...不推荐... -
@Fe2O3 我试过 fgets!但我有一个问题.. 如果我使用两个连续的 fget,第一个 fget 不起作用.. 你知道我该如何解决吗?
标签: arrays c for-loop initialization string-literals