我有一个 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 '
,数组中两个独立的字段。我还尝试仅使用 '\\'
搜索 '\'
以补偿它是转义序列的事实,但这只是给了我一个分段尝试运行它时出现错误和核心愚蠢。
我还尝试创建第二个数组,该数组基于第一个数组,但从第一个数组中获取 '\'
并将其设为 '\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'
在数组中而不是 NUL
,然后就这样做
for( i=0; i < length; i++ ) {
if( workingarray[i] == '\\' && workingarray[i+1] == '0' ) {
i++;
printf("\n");
} else {
printf( "%c", workingarray[i]);
}
}
另请注意,您需要使用 <
在 for 循环中而不是 <=
,比较需要使用==
而不是=
.
关于c - 格式化字符数组中的文件输入文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38570344/