问题描述
- 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