【发布时间】:2018-08-13 12:41:08
【问题描述】:
这是我的问题陈述:
我有一个与我找不到合适解决方案的部分代码相关的小问题。同样,我不一定要求一个完整的解决方案,我只是遇到了死胡同。我需要从文件中读取行(不知道它们的长度)找到行的最大长度并在每行的单词之间均匀地添加空格,以便它们完全对齐(所有行的大小与最大值相同一)。
到目前为止,这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *f;
char *word;
int j, i, m, n, c, k, z;
char aux[255] = "", aux1[255];
i = 0;
j = 0;
char file[100][100];
char s[100];
f = fopen("user_input.txt", "r");
m = 0;
while (fgets(file[i], sizeof(file[i]), f)) {
if (m < strlen(file[i]) - 1)
m = strlen(file[i]) - 1;
i++;
}
for (j = 0; j < i; j++) {
n = 0;
for (k = 0; k < strlen(file[j]); k++)
if (file[j][k] == ' ')
n++;
c = (m - strlen(file[j])) / n;
for (z = 0; z < c; z++)
aux[z] = ' ';
for (k = 0; k < strlen(file[j]); k++)
if (file[j][k] == ' ') {
strcpy(aux1, file[j] + k + 1);
strcat(file[j], aux);
strcat(file[j], aux1);
}
printf("%s", file[j]);
}
}
【问题讨论】:
-
1) 确切的问题是什么?哪条线路,功能等? 2) 这段代码的格式很差。
-
看起来您正在攻击如何读取行、获取长度、查找空格和插入空格的基础知识,这很好。但是没有策略的迹象——您需要将问题分解为可管理的步骤。读取文件,将其分成几行,一次处理一行,确定要添加多少个空格,确定在哪里添加它们,实际添加它们,最后产生你的输出。如果您使用变量名/函数名/cmets 来明确代码的每个部分在做什么,这将有所帮助。
-
@AlexanderDmitriev 我会附上一张实际程序的图片
-
你应该添加#include
这是strlen的需要。确保该文件存在于该位置。 -
@LethalProgrammer 我添加了它,到目前为止它只对齐第一行