이 코드가있는 출력에서 다른 모든 행을 비워 두는 데 문제가 있습니다. 원하는 출력은 다음과 같습니다 http://paste.ubuntu.com/1354365/출력시 다른 모든 행을 비워 두는 중
난다면 : http://paste.ubuntu.com/1356669/이
사람이 왜 다른 모든 라인이 빈 줄을 얻고 아이디어를 가지고 있습니까?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *fp;
FILE *fw;
int main(int argc, char *argv[]){
char buffer[100];
char *fileName = malloc(10*sizeof(char));
char **output = calloc(10, sizeof(char*));
char **outputBuffer = calloc(10, sizeof(char*));
fw = fopen("calvin.txt", "w+");
for(int y = 0; y < 6; y++){
for(int i = 0; i < 10; i ++)
{
output[i] = malloc(100);
}
for(int x = 0; x < 12; x++){
sprintf(fileName,"part_%02d-%02d", x, y);
fp = fopen(fileName, "rb");
if(fp == NULL)
{
printf("Kan ikke åpne den filen(finnes ikke/rettigheter)\n");
}
else if(fp != NULL){
memset(buffer, 0, 100);
for(int i = 0; i < 10; i++){
outputBuffer[i] = malloc(100);
}
fread(buffer, 1, 100, fp);
for(int i = 0; i < 100; i++){
if(buffer[i] == '\0')
{
buffer[i] = ' ';
}
else if(buffer[i] == '\n')
{
buffer[i] = ' ';
}
}
for(int i = 0; i < 10; i++) {
strncpy(outputBuffer[i], buffer + i * 10, 10);
strncat(output[i], outputBuffer[i]+1, 11);
}
}
}
for(int i = 0; i < 10; i++){
printf("%s\n", output[i]);
}
}
fclose(fp);
free(fileName);
}
입력 파일이 Windows에서 생성 되었습니까? 그렇다면 줄이 \ n \ n 대신 \ r \ n으로 끝나고 코드가 \ n 만 확인하는 것으로 보입니다. – atkretsch
다음과 같이 변경하십시오. "rb"를 this : "r"로 변경하면 찾고있는 것과 더 가까워 지는지 확인하십시오. – WhozCraig
우분투에서 파일을 만들었고 "r"과 "rb"둘 다 시도했습니다.아무런 차이가없는 것처럼 보입니다. – user1822221