【发布时间】:2021-11-16 07:51:14
【问题描述】:
我目前正在尝试使用 strtok 操作 char 指针变量。然后在条件语句中使用它来根据当前指针内容追加到数组。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 48
#define sizel 10
#define sizer 128
void show_bits(unsigned int x[]);
void clear(unsigned int x[]);
int main(void) {
char line[sizel][sizer];
unsigned int s[N];
unsigned int d[N];
unsigned int b[N];
FILE *fp1 = NULL;
int i = 0;
int tot = 0;
fp1 = fopen("LineEncoded.txt", "r");
while (fgets(line[i], sizer, fp1)) {
line[i][strlen(line[i]) - 1] = '\0';
i++;
}
clear(s);
i = 0;
char * pch;
pch = strtok (line," ");
while (pch != NULL) {
if (pch == '0') {
s[i]=1;
i++;
}
else if (pch == "--" || pch == "++") {
s[i]=0;
i++;
}
pch = strtok (NULL, " ");
}
show_bits(s);
return 0;
}
void show_bits(unsigned int x[]) {
int i;
for (i = 0; i < N; i++) {
if (i % 32 == 0)
printf ("\n");
fprintf(stdout, "%d", x[i]);
}
fprintf(stdout, "\n");
}
void clear(unsigned int x[]) {
int i;
for (i = 0; i < N; i++)
x[i] = 0;
}
LineEncoded.txt 文件的内容是:
-- ++ 0 0 -- ++ ++ ++ 0 -- 0 0 0 0 -- 0 -- 0 -- 0 0 0 0 0 -- 0 -- ++ 0 0 -- ++ 0 0 -- ++ 0 0 -- ++ 0 0 -- ++ 0 0 --
我想做的是解码文件。我首先将文本文件内容放入一个 char 数组(称为 line),然后使用 strtok 按空格分割文本,但是在放置 if 语句块时我卡住了,因为输出结果是错误的,如下所示:
00000000000000000000000000000000
0000000000000000
我什至尝试用 for 循环替换 while 循环,但我不知道它是否真的做了什么。
下面的解码输出应该等于这个:
1010101110001110000001111000101010101010101010101
任何帮助将不胜感激。谢谢
【问题讨论】:
标签: c pointers multidimensional-array c-strings strtok