【发布时间】:2012-11-01 00:57:15
【问题描述】:
我是 C 新手,遇到字符串问题。我想做的是在循环中创建一个类似“val1,val2,val3”的字符串。
目前我的代码如下所示:
char tagstr[60] = "";
int k;
int n = 5;
for (k=0; k < n; k++) {
char temp[10] = "";
sprintf(temp, ", val%d", k);
strcat(tagstr, temp);
}
但是 tagstr 的输出是 ", val#",其中 # 是一些长整数值。我猜我在这里用指针做错了,但我已经尝试了我能想到的一切都没有成功......任何帮助将不胜感激。
编辑:更多上下文,如果有帮助的话:
int tagsClosed = strlen(pch1) - strcspn(pch1, ")");
do {
if (curTag.size > 0) {
// problem section
char tagstr[60] = "";
int k;
for (k = 0; k < 5; k++) {
char temp[10] = "";
sprintf(temp, ", val%i", temp, k);
strcat(tagstr, temp);
}
// This prints out something like ", val-890132840" x 5 (same number)
printf ("String is now: %s\n", tagstr);
}
curTag = *(curTag.parent);
tagsClosed--;
} while (tagsClosed > 0);
curTag 是一个结构体:
typedef struct Tag {
char * name;
int size; // number of children
int tagnum;
struct Tag* parent;
} Tag;
【问题讨论】:
-
第一个问题
temp[5]的错误不足以容纳 ", valk" 使其成为 temp[10] 或只是为了确保您有足够的空间。 -
哎呀,已修复。不过同样的问题。
-
您发布的代码很好(除了它不编译)。它也与指针无关。您需要向我们展示您的实际代码。
-
我不确定哪里出了问题,然后...编辑以添加更多上下文,如果有帮助的话。