命令行参数-C语言 字符串数组处理,50B,急求

问题描述

C语言 字符串数组处理,50B,急求

1.我想写一个程序:(C)
给定一个字符串"test"
生成一个字符串数组,元素分别为"test1","test2""test3""test4".(用for循环,元素数量可变)
2.为什么我程序在把命令行传入的参数赋值给一个字符串变量后,其余的字符串变量都变成了这个参数值?比如:
tx[0]="KU";
printf("t1===%sn",tx[0]);
name[0]=argv[1];
这样的话,tx[0]就是KU.

tx[0]="KU";
name[0]=argv[1];
printf("t1===%sn",tx[0]);
这样,tx[0]就是我传入的参数值argv[1]???
50悬赏,急求!谢

解决方案

你说你想要这个么?字符串数组

#include <string>
#include <iostream>
using namespace std;
int main()
{
 char* pTest = "test";
    int num;
    cout<<"请输入num:";
    cin>>num;
    char** pStr = new char*[num];
    for (int i = 0; i < num; i++)
    {
        char pTemp[10] = {0};
        pStr[i] = new char[10];
        memset(pStr[i], '', 10);
        memcpy(pStr[i], pTest, strlen(pTest));
        itoa(i + 1, pTemp, 10);
        strcat(pStr[i], pTemp);
    }

    for (int i = 0; i < num; i++)
    {
        printf("%s ", pStr[i]);
    }

    printf("n");
    return 0;
    }

解决方案二:

把你的代码贴全了,不知道你的name数组和你的tx数组有什么关系没?
如果name和tx指向的是同一个地址的话,你打印出来的就可能是你后赋值的那个值。

解决方案三:

源码贴出来,不然看不出来,好像不难

解决方案四:

tx是一个指向字符串数组的地址的指针(也就是二级指针)对吧?

 tx[0]="KU";
printf("t1===%sn",tx[0]);
name[0]=argv[1];
 tx[0]="KU";
name[0]=argv[1];
printf("t1===%sn",tx[0]);

这两段程序的唯一区别是第二和第三个语句的顺序不同。如果先将命令行参数传给name[0],就会输出命令行的结果。
但是,确切地说,tx和name有啥子关系嘞?

解决方案五:

tx[0]与name[0]指向的地址是否相同?如果相同,那么前面一段的代码作用就是,将字符串uk赋给tx[0],然后输出,此时tx[0]的内容为"uk"。然后name[0]=argv[1]就是将tx[0]的值再次改变。最终窗口输出的是"uk",但tx[0]的值是argv[1]的值。而后面一段代码的作用是,先把"uk"赋给tx[0],然后通过name[0]=argv[1]再次改变tx[0]的值,然后输出tx[0]。最终窗口输出的是argv[1]的值,tx[0]得值也是等于argv[1]的值。
总的来说,两段代码的结果都是把argv[1]的值赋给tx[0]。只是窗口输出不一样而已。

解决方案六:

你的tx跟name指向的是同一地址吧,你源码没看到,不过你肯定是做了操作使得这样的吧

解决方案七:

能不能给出个我问的第一个问题的源码,肯定不难,但是字符串这部分我老是碰壁!

时间: 2024-11-10 07:24:35

命令行参数-C语言 字符串数组处理,50B,急求的相关文章

c语言-C语言中的命令行参数有什么作用?

问题描述 C语言中的命令行参数有什么作用? 最近再学习C语言,在学习到命令行参数的问题的时候搞清楚了命令行参数的用法以及怎么实现的,但是目前无法理解命令行参数到底在实际编程当中的作用是是什么? 希望得到好心人的帮助,谢谢. 解决方案 你可以做一个实验.按键盘上ctrl右边的windows键,不松手,再按下r,打开运行对话框. 输入如下命令 explorer 运行,你会打开一个我的电脑的窗口,默认显示的是你的文档或者当前目录. 关闭,再输入 explorer c: 这次打开我的电脑,并且默认显示的

c语言-C语言使用命令行参数问题

问题描述 C语言使用命令行参数问题 在C语言中,为了使用命令行参数,main函数的第一行一般形式为void main(int argc,char*argv[]),如果命令行为"test a 3 data",则argv[0]表示的是:A)test B)a C)3 D)data===答案是A,求大侠解释? 解决方案 依次 agrv[0]代表程序名,argv[1]....之后代表参数 解决方案二: 当然了,参数用空格分隔.第一个是test.第二个是a,等等.选a 解决方案三: 学习C语言时一

Go程序设计语言1.2 命令行参数

1.2 命令行参数 大部分程序处理输入然后产生输出,这就是关于计算的大致定义.但是程序怎样获取数据的输入呢?一些程序自己生成数据,更多的时候,输入来自一个外部源:文件.网络连接.其他程序的输出.键盘.命令行参数等.随后的一些示例将从命令行参数开始讨论这些输入. os包提供一些函数和变量,以与平台无关的方式和操作系统打交道.命令行参数以os包中Args名字的变量供程序访问,在os包外面,使用os.Args这个名字. 变量os.Args是一个字符串slice.slice是Go中的基础概念,很快我们将

C语言程序设计之命令行参数

  在许多应用软件运行时都带有命令行参数,其实这些命令行参数在C语言编写的程序中也可以实现,灵活地运用命令行参数进行处理可以有效地提高程序的运行效率,收到事半功倍的效果. C语言中有关命令行参数涉及到程序的主函数main(int argc,char *argv[]这样两个参数,其中,int argc表示命令行参数的个数(包括可执行程序名本身),char *argv[]表示每个参数的具体内容,argv[0]为命令行中可执行程序名本身,argv[1]为命令行中第二个参数的内容,依次类推.如下例输出命

字符串-这个命令行参数程序怎么运行啊?

问题描述 这个命令行参数程序怎么运行啊? #include #include int main(int argc char *argv[]){ char ch; if (argv[1][0] == '-') //注意argv[0]是EXE的路径,所以参数是argv[1].argv[2]-- if (argv[1][1] == 'u') while(( ch=getchar() ) != EOF) putchar( toupper(ch) ); else if (argv[1][1] == 'l'

c语言-C语言,用命令行参数复制文件,请问哪里出错了

问题描述 C语言,用命令行参数复制文件,请问哪里出错了 #include #include int main(int argc, char *argv[]) { int ch; errno_t err; FILE *source, *destination; if ((err = fopen_s(&source, argv[1], "rb") )!=0) { printf("can't open %sn", argv[1]); exit(1); } if (

命令行参数(带参main)

int main(int argc, char * argv[]){ --} 参数argc就代表启动程序时,命令行参数的个数.C/C++语言规定,可执行程序程序本身的文件名,也算一个命令行参数,因此,argc的值至少是1.参数argv是一个数组,其中的每个元素都是一个char* 类型的指针,该指针指向一个字符串,这个字符串里就存放着命令行参数.argv[0]指向的字符串就是第一个命令行参数,即可执行程序的文件名argv[1]指向第二个命令行参数argv[2]指向第三个命令行参数--.#inclu

getopt() 对命令行参数进行分析

getopt() 对命令行参数进行分析 int getopt( int argc, char *const argv[], const char *optstring );         给定了命令参数的数量 (argc).指向这些参数的数组 (argv) 和选项字符串 (optstring) 后,getopt() 将返回第一个选项,并设置一些全局变量.使用相同的参数再次调用该函数时,它将返回下一个选项,并设置相应的全局变量.如果不再有识别到的选项,将返回 -1,此任务就完成了.可以重复调用

C/C++中命令行参数的原理

很早以前的dos应用程序中,我们经常会用命令行参数执行应用程序例如: copy c:\1.txt d:\ 在c/c++中,命令行参数的传递是利用main进行形参传递实现的 前面的教程中我们对面都进行了void main()或者是void main(void)的定义,这表示main不返回任何类型,和main不带有任何参数,但在缺剩状态下mian()这样形式下,形式参数一直是存在在栈空间内的只是隐藏了起来. 为了实现命令行参数我们将使用main(int argc,char* argv[])这样的形式