从循环中获取数组中的字符串

时间:2017-12-30 14:13:08

标签: c arrays string loops codeblocks

我创建了一个循环,它从test.txt文件中逐行获取行。 内部测试中有一个简单的无意义文本:

int main(int argc, char  *argv[])
{
  return abc, def;
} 

我的程序的目的是将它带到零件。 例如:取词" argc,"并将其保存到数组[2]。

我的代码:

char break1[] = "- \t\n\0;)(";
char* array[x];
char* Buffor;
int intlength = 0;
int a=0, b=0, c=0, d=0, e=0, f=0, g=0, h=0, i=0, j=0, k=0, l=0, m=0;
FILE * File;
Plik = fopen("Test.txt", "r");
char Line[150];
while(!feof(File))
    {
        fgets(Line, 150, File);
        Buffor = strtok(Line, Break1);
        while(Buffor != NULL)
        {
            if(c==1)
            {
                array[i]=Buffor;
                printf("\n%s for %d", array[i], i);
                i++;
                b++;
                if(strstr(Buffor, ";") != NULL)
                {
                    c--;
                }
            }
            if(d==1)
            {
                if(strstr(Buffor, "return") != NULL)
                {
                array[i]=Buffor;
                printf("\n%s for %d", array[i], i);
                    c++;
                    i++;
                    b++;
                    d--;
                }
            }
            if(a==1)
            {
                array[i]=Buffor;
                printf("\n%s for %d", array[i], i);
                i++;
                b++;
                if(strstr(Buffor, ")") != NULL)
                {
                    a--;
                    d++;
                }
            }
            if(strstr(Buffor, "int") != NULL)
            {
                intlength = strlen(Buffor);
                if(intlength<5)
                {
                    array[i]=Buffor;
                    printf("\n%s for %d", array[i], i);
                    i++;
                    b++;
                    a++;
                }
            }
            Buffor = strtok(NULL, Break1);
        }

问题是:我想从循环中取出的字符串(标记为红色)正在变为标记为橙色的字符串。我该如何保持红色?我尝试用指针制作但我还不够好...... enter image description here

顺便说一下。编译器没有给出任何错误或警告。

1 个答案:

答案 0 :(得分:0)

好的,我已经知道了。 如果我知道那么简单...... 我所要做的就是改变这些界限:

array[i]=Buffor;
printf("\n%s for %d", array[i], i); 

对于这些:

array[i]=malloc(strlen(Buffor) + 1);\
strcpy(array[i], Buffor);
printf("\n%s for %d", array[i], i);