我正在学习 C,并且编写了一个简单的程序。它不起作用,我需要一个答案
I'm learning C and I've made a simple program. It doesn't work and I need a an answer
我正在学习 C,我做了一个简单的程序,但它不起作用。这是代码:
#include <stdio.h>
#include <windows.h>
int main(int argc, char* argv[]){
system("title test");
printf("Arguments: %i\n", argc);
for (int i, int i <= %s, argv[i], i++){
switch (%s, argv[i]){
case 1:
printf("First Argument: %s\n", argv)
}
}
return 0;
}
我打算添加更多内容,但首先我需要弄清楚哪里出了问题。请用答案回复这个问题。我可能暂时不会回复,因为我很快就要睡觉了。抱歉,如果我违反了任何规则,我是 Stack Overflow 的新手,我还没有阅读规则,如果有的话。
顺便说一句,这里是错误的东西:
| 7|error: expected identifier or '(' before 'int'|
| 7|error: expected expression before ',' token|
| 8|error: expected expression before '%' token|
|11|error: expected ';' before '}' token|
| |=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
首先,switch的语法是这样的:
switch (expression)
{
case constant1:
// statements
break;
case constant2:
// statements
break;
.
.
.
default:
// default statements
}
switch 语句是如何工作的?
表达式计算一次并与每个案例标签的值进行比较。
如果匹配,则执行匹配标签后的对应语句。例如,如果表达式的值等于 constant2,则执行 case constant2: 之后的语句,直到遇到 break。
如果没有匹配,则执行默认语句。
如果不使用break,则执行匹配标签后的所有语句。
顺便说一下,switch 语句中的 default 子句是可选的。
第二个:
for循环的语法是:
for(int i=(First value of control);i<=(Final value of control);Increment of control variable)
示例:
for(int i=0;i<=10;i++)
你的程序有几个错误:
%s
没有任何意义
for (int i, int i <= %s, argv[i], i++)
是错误的,没有任何意义。
- 您的
case
中缺少一个 break
。它在这里没有坏处,但是一旦你添加更多 case
,你就会 运行 陷入困境。
- 你想要
i < argc
,argc
至少是 1 因为 argv[0]
是程序的名称。
你可能想要这个:
#include <stdio.h>
#include <windows.h>
int main(int argc, char* argv[]) {
system("title test");
printf("Arguments: %i\n", argc);
for (int i = 0; i < argc; i++) { // use i < argc
switch (i) {
case 1:
printf("First Argument: %s\n", argv[i]);
break; // this was missing
}
}
return 0;
}
顺便说一句,switch/case 应该替换为 if 此处:
for (int i = 0; i < argc; i++) {
if (i == 1) {
printf("First Argument: %s\n", argv[i]);
}
}
我正在学习 C,我做了一个简单的程序,但它不起作用。这是代码:
#include <stdio.h>
#include <windows.h>
int main(int argc, char* argv[]){
system("title test");
printf("Arguments: %i\n", argc);
for (int i, int i <= %s, argv[i], i++){
switch (%s, argv[i]){
case 1:
printf("First Argument: %s\n", argv)
}
}
return 0;
}
我打算添加更多内容,但首先我需要弄清楚哪里出了问题。请用答案回复这个问题。我可能暂时不会回复,因为我很快就要睡觉了。抱歉,如果我违反了任何规则,我是 Stack Overflow 的新手,我还没有阅读规则,如果有的话。
顺便说一句,这里是错误的东西:
| 7|error: expected identifier or '(' before 'int'|
| 7|error: expected expression before ',' token|
| 8|error: expected expression before '%' token|
|11|error: expected ';' before '}' token|
| |=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
首先,switch的语法是这样的:
switch (expression)
{
case constant1:
// statements
break;
case constant2:
// statements
break;
.
.
.
default:
// default statements
}
switch 语句是如何工作的?
表达式计算一次并与每个案例标签的值进行比较。
如果匹配,则执行匹配标签后的对应语句。例如,如果表达式的值等于 constant2,则执行 case constant2: 之后的语句,直到遇到 break。 如果没有匹配,则执行默认语句。
如果不使用break,则执行匹配标签后的所有语句。
顺便说一下,switch 语句中的 default 子句是可选的。
第二个:
for循环的语法是:
for(int i=(First value of control);i<=(Final value of control);Increment of control variable)
示例:
for(int i=0;i<=10;i++)
你的程序有几个错误:
%s
没有任何意义for (int i, int i <= %s, argv[i], i++)
是错误的,没有任何意义。- 您的
case
中缺少一个break
。它在这里没有坏处,但是一旦你添加更多case
,你就会 运行 陷入困境。 - 你想要
i < argc
,argc
至少是 1 因为argv[0]
是程序的名称。
你可能想要这个:
#include <stdio.h>
#include <windows.h>
int main(int argc, char* argv[]) {
system("title test");
printf("Arguments: %i\n", argc);
for (int i = 0; i < argc; i++) { // use i < argc
switch (i) {
case 1:
printf("First Argument: %s\n", argv[i]);
break; // this was missing
}
}
return 0;
}
顺便说一句,switch/case 应该替换为 if 此处:
for (int i = 0; i < argc; i++) {
if (i == 1) {
printf("First Argument: %s\n", argv[i]);
}
}