【发布时间】:2020-04-01 16:55:27
【问题描述】:
我将不胜感激有关以下代码的一些指导,以使其正常工作。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define charLength 5
#define bytesLength charLength*sizeof(char)
int n;
char** T=0;
void fillT(int n){
char* __T[n];
for(int i=0; i<n; i++) {
__T[i] = (char*)malloc(bytesLength);
scanf("%s",__T[i]);
}
T = __T;
}
void foo(){
n = 3;
fillT(n);
}
int main(){
foo();
for(int i=0; i<n; i++){ //works OK
printf("%d %s\n",i,T[i]);
}
for(int i=0; i<n; i++){ //doesn't work!!!, Why???
printf("%s\n",T[i]);
}
}
我需要让最后一个 for 循环工作,但由于某种我无法理解的原因,我做不到。
This 是当前输出。
【问题讨论】:
-
当
fillT()返回时,您认为char* __T[n];会发生什么? -
“不起作用”是什么意思?共享错误消息或预期输出与错误输出。此外,这似乎是一个调试作业。
-
我添加了一个屏幕截图;预期的输出是第一个 for 循环,错误的 putput 是末尾的两个空行;事实上,这是一个 2K 线项目的小型模型,出于某种原因我坚持了下来。非常感谢您的回复。
-
@practicante 如果您不在您的 cmets 中标记我,我将不会收到通知。我不知道你在说什么项目,但无论如何我都会尽力帮助你。让我检查一下。
标签: c multidimensional-array char