我有一个基本上打印出一个字符数组的函数。它正在读取一个数据文件,其中每一行都具有以下结构:
.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
。如何在循环期间简单地将一个字符保存在变量中可能会搞砸它?