我有越來越每隔一行空輸出與此代碼的問題。所需的輸出是: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?如果是這樣,那麼您的代碼行可能會以\ r \ n而不是\ n結尾,而您的代碼似乎只能檢查\ n。 – atkretsch
更改此:「RB」這樣的:「R」,看看是否讓你更接近你在找什麼。 – WhozCraig
我在Ubuntu上創建了這個文件,我嘗試過使用「r」和「rb」。似乎沒有區別 – user1822221