我有一个包含特定文本字符串的file.txt。让我们说字符串是,没有引号“xDfS2 \ 0dj \ 0 \ 0aj”
首先,我将此文本放入char数组中,我使用fopen和fread将文本输入char *workingarray;
我的问题来自于尝试打印此数组的形式。 (使用printf)我想逐个字符地打印数组,但每次读取'\0'
时我都希望它转到一个新行..所以workingarray
的输出将是..
xDfS2
dj
aj
我正试图立即实现这一目标..
for( i=0; i <= length; i++ ) {
if( workingarray[i] = '\0' ) {
printf("\n");
} else {
printf( "%c", workingarray[i]);
}
}
现在这不起作用,因为它没有看到第一个\ 0为'\0'
,而是'\'
和'0'
,数组中有两个单独的字段。我还尝试使用'\'
来搜索'\\'
,以便补偿它是一个转义序列的事实,但这只会给我一个分段错误,并且在尝试运行它时会感到核心愚蠢。 / p>
我还尝试过制作第二个基于第一个数组的数组,但是从第一个数组中获取'\'
并在第二个数组中将其设为'\0'
而忽略任何0
在第一个,而不是像这样。
int k = 0
length = sizeof(workingarray);
for(i=0; i <= length; i++) {
if( workingarray[i] = '\\') {
newarray[i-k] = '\0';
k++;
} else if ( workingarray[i] = '0' ) {
return;
} else {
newarray[i-k] = workingarray[i];
}
}
长话短说..我不知道该怎么做。如何从文件中输入一串文本(整个文件,而不仅仅是文件的某一部分),然后将该字符串打印出来,同时为字符串中的每个\ 0创建新行?
答案 0 :(得分:3)
如果您在数组中有实际'\\'
和'0'
而不是NUL
,那么只需执行
for( i=0; i < length; i++ ) {
if( workingarray[i] == '\\' && workingarray[i+1] == '0' ) {
i++;
printf("\n");
} else {
printf( "%c", workingarray[i]);
}
}
另请注意,您需要在for循环中使用<
而不是<=
,并且需要使用==
而不是=
进行比较。