qq1512165940
残光逐影
2015-11-19 04:30
采纳率: 60%
浏览 1.9k
已采纳

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

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

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • yangbo50304
    yangbo50304 2015-11-20 01:51
    已采纳

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

    #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], '\0', 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;
        }
    
    点赞 评论
  • yangbo50304
    yangbo50304 2015-11-19 04:49

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

    点赞 评论
  • woaichanganba
    woaichanganba 2015-11-19 04:53

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

    点赞 评论
  • Meditator_hkx
    Meditator_hkx 2015-11-19 05:30

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

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

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

    点赞 评论
  • qq_28249373
    shifenglv 2015-11-19 05:39

    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]。只是窗口输出不一样而已。

    点赞 评论
  • qq_32938623
    qq_32938623 2015-11-19 08:12

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

    点赞 评论
  • qq1512165940
    残光逐影 2015-11-19 11:04

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

    点赞 评论

相关推荐