gpt4 book ai didi

C - 数组、排序和修改

转载 作者:行者123 更新时间:2023-11-30 14:26:44 26 4
gpt4 key购买 nike

正在从事一项任务,该任务是 SO 上各种其他问题的主题!我已经到了再次尝试将数字附加到数组的阶段,尽管这一次,代码在参数中传递信息的方式更加复杂。

编辑:代码也在下面

对此深表歉意,但请修改代码:http://pastebin.com/8SUjRyZQ

论坛帖子上的内容有点太多了。

问题是,它不是附加数字,而只是垃圾,尽管这一次,我真的不明白为什么,因为我已经考虑了之前关于该主题的问题中的所有建议。

它应该在 void AppendInt 函数中将数字 int val 附加到数组中,而它只是附加垃圾。

嗯,在 Notepad++ 中,它打印出 Wo​​rd - PasswordBOH - BOH 是一些随机垃圾,它就像一个图像,BOH 为黑色背景的白色文本。

感谢任何人的帮助!

PS> 如果需要,我可以在此处发布代码,但它是一个很大的 block 。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAXLINES 5000 /* max no. lines to be stored */
#define MAXLEN 1000 /* max length of single line */

char *lineptr[MAXLINES];

void capitalise(char *line);
void decision(int i, char *line, int val);
void writelines(char *lineptr[], int nlines);
void qksort(char *v[], int left, int right);
void swap(char *v[], int i, int j);
void AppendInt(char *line, int val, int length);

int main(int argc, char *argv[]) {

int nlines = 0, j, k, i = 0;
char line[MAXLEN];
FILE *fpIn;

printf("WLO v1.0 Alpha Release - Coded in C - Big Shout to StackOverFlow!\n");
printf("1.QuickSort List.\n");
printf("2.QuickSort - Capitalise Word[0]\n");
printf("3.QuickSort - Capitalise Word[0] - Append X\n");
scanf("%d", &k);

if(k == 3) {
printf("Enter the value you wish to append (a single Integer): ");
scanf("%d", &i);
}

fpIn = fopen(argv[1], "rb");
while((fgets(line, 65, fpIn)) != NULL) {
j = strlen(line);
if (j > 0 && (line[j-1] == '\n')) {
line[j-1] = '\0';
}
if (j > 8) {
if(k != 1)
decision(k, line, i);
lineptr[nlines++] = strdup(line);
}
}
qksort(lineptr, 0, nlines - 1);
writelines(lineptr, nlines);
return 0;
}

void decision(int i, char *line, int val) {
if(i == 2)
capitalise(line);
else if(i == 3)
AppendInt(line, val, strlen(line));
}

void capitalise(char *line) {
line[0] = toupper((line[0]));
}

void AppendInt(char *line, int val, int length){
capitalise(line);
line[length] = val;
line[length + 1] = '\0';
}

void writelines(char *lineptr[], int nlines) {
FILE *fpOut;
int i;
fpOut = fopen("tmp.out", "wb");
for(i = 0; i < nlines; i++)
fprintf(fpOut, "%s\n", lineptr[i]);
}

void qksort(char *v[], int left, int right) {
int i, last;
void swap(char *v[], int i, int j);
if (left >= right)
return;
swap(v, left, (left + right)/2);
last = left;
for (i = left+1; i <= right; i++)
if (strcmp(v[i], v[left]) < 0)
swap(v, ++last, i);
swap(v, left, last);
qksort(v, left, last-1);
qksort(v, last+1, right);
}

void swap(char *v[], int i, int j) {
char *temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}

最佳答案

您可以使用sprintf:

void AppendInt(char *line, int val, int length) {
capitalise(line);
sprintf(line+length, "%d", val);
}

关于C - 数组、排序和修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8670640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com