c - 格式化字符数组中的文件输入文本?

标签 c arrays

我有一个 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/

相关文章:

objective-c - Cocoa API 的 C 绑定(bind)?

c - 如果 LONG_MAX 为 2147483647,strtol ("-2147483648", 0, 0) 是否溢出?

c - 如何为递归类型创建 Storable 实例?

c++ - c/c++ 和 objective c ios

C: 返回 char 数组变成垃圾

python - 在 python 中迭代 JSON 并根据键过滤值以获得所需的结果

jquery - 使用 jQuery 从 HTML 元素名称获取键

将大数组的所有元素初始化为某个常量后,C 程序无法执行系统调用

javascript - 为什么这个 JavaScript 代码组合数组的元素而不是添加元素?

Javascript循环和构建数组但变量索引未定义