我正在用 C 代码尝试一个简单的事情:
const char *files[4];
char buffer[50];
int i;
for(i = 0; i < 5; i++){
sprintf(buffer,"test%i%s", i, ".txt");
files[i] = buffer;
}
文件输出:
test4.txt
test4.txt
test4.txt
test4.txt
test4.txt
我真正想要实现的目标:
test0.txt
test1.txt
test2.txt
test3.txt
test4.txt
谁能告诉我怎么了? (文件必须是 const char*)
最佳答案
变量buffer
在整个程序执行过程中具有相同的地址。
因此 files[0]
、files[1]
、files[2]
和 files[3]
都将指向同一个地址。
在循环的最后一次迭代中,您试图设置 files[4]
,这会产生未定义的行为。
对于您要实现的目标,您可以执行以下操作:
int i;
char files[5][50];
for (i=0; i<5; i++)
sprintf(files[i],"test%d.txt",i);
关于c - 使用 sprintf 时出现循环错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26343809/