【发布时间】:2012-09-11 06:21:22
【问题描述】:
我需要制作一个程序,在命令行中接受不少于 2 个且不超过 6 个参数,然后打印出第一个或第二个字符 例如: asdf asdf asdf asdf 输出为:a s a s
我有初始数组设置和工作,下面的 for 循环是为了在输入中的一个空格处切断字符串并将其复制到一个新字符串,但它不能正常工作。我是 C 和这个网站的新手。非常感谢任何帮助。
#include <stdio.h>
#include <string.h>
int main(){
char a[50];
char b[50];
char c[50];
char d[50];
char e[50];
char f[50];
int i;
printf("enter a string (Ex: asdf asdf asdf... Must have atleast 2 arguments but no more than six): ");
scanf("%s", a);
printf("%c", a);
for (i = 0; i != 50; i++){
if(a[i]==' '){
char strncpy(b, &a[i], i+2);
printf("\n%c ",a[1]);
printf("%c ",b[0]);
}
}
for (i = 0; i != 50; i++){
if(b[i]==' '){
char strncpy(c, &b[i], i+2);
printf("%c ",c[1]);
}
}
for (i = 0; i != 50; i++){
if(c[i]==' '){
char strncpy(d, &c[i], i+2);
printf("%c ",d[0]);
}
}
for (i = 0; i != 50; i++){
if(d[i]==' '){
char strncpy(e, &d[i], i+2);
printf("%c ",e[1]);
}
}
for (i = 0; i != 50; i++){
if(e[i]==' '){
char strncpy(f, &e[i], i+2);
printf("%c ",f[0]);
}
}
return 0;
}
【问题讨论】:
-
我错过了什么吗?当您说“在命令行传递参数”时,我希望您谈论的是传递给
main()的argv数组。不是这样吗?我已经准备了一个假设是的答案,但也许你可以先澄清一下。 -
是的,这就是我应该做的。然而,我只是在一段时间后尝试这样做
-
嗯,我看到您已经编辑了您的问题,以便您从控制台而不是命令行读取。在你说这就是你真正想要做的事情之后,我发布了我的命令行答案。如果这不是你的意思,我会删除它。
-
我实际上并不完全确定老师想要什么,这本书也对每个问题都说命令行,但是老师已经接受了不使用命令行的程序。您的回答很好,感谢您的帮助!