在字符数组

时间:2017-09-26 03:27:23

标签: c arrays dynamic-memory-allocation

我有一个基本上打印出一个字符数组的函数。它正在读取一个数据文件,其中每一行都具有以下结构:

.txt文件阅读:

a   30

中间的空格是一个标签。所以我知道每行有3个字符(不包括空终止符或换行符)。因此,当我在循环中找到数组[2]时,我会使用这些知识来表示嘿,然后开始跟踪该整数并将其添加到缓冲区。

我的问题在printCharArray(char *arr)函数中。

C计划

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int printCharArray(char *arr);

int main(int argc, char * argv[]){
    FILE * filePointer;
    filePointer = fopen("test1.txt", "r");
    char singleLine[32];

    // gets the line of file, and sends it to the print function i made
    while(fgets(singleLine, 32, filePointer) != NULL){
        printCharArray(singleLine);
    }

    fclose(filePointer);
    return 0;
}

int printCharArray(char *arr){
    int length = 5;
    printf("\n");

    int i = 0;
    char buffer[16];

    // loops until it hits the end of a line
    while(arr[i] != '\n') {
        // prints each character, separated by commas
        printf("%c, ", arr[i]);


        // this is to start storing the integer chars at the end of the line
        if(i > 1){
            size_t len = strlen(buffer);
            buffer[len++] = arr[i];
            buffer[len] = '\0';
        }

         // get the first item in the line, aka i (insert) or d (delete)
         // THIS IS WHAT BREAKS THE PROGRAM
        if(i == 0){
            char aORb = arr[0];
        }

        i++;

    }
    printf("string = %s \n", buffer);
    return 0;
}

问题是if (i == 0)功能的printCharArray()部分。删除该部分后,输出将立即生效:

string = 30

但是当我提出if (i == 0)语句时,我得到string = p(?10。如何在循环期间简单地将一个字符保存在变量中可能会搞砸它?

0 个答案:

没有答案