我试图从C中的字符串中删除一个字符.我的代码问题是它从字符串中删除了字符的第一个实例,但也擦除了字符串中该字符后的所有内容.例如,从'hello'中删除'l'会打印'he'而不是'heo'
int i;
char str1[30] = "Hello", *ptr1, c = 'l';
ptr1 = str1;
for (i=0; i<strlen(str1); i++)
{
if (*ptr1 == c) *ptr1 = 0;
printf("%c\n", *ptr1);
ptr1++;
}
Run Code Online (Sandbox Code Playgroud)
我需要使用指针,并希望尽可能简单,因为我是C的初学者.谢谢
我试图将一个typedef结构指针传递给一个函数,并且编译器正在抱怨此错误消息:错误:未知类型名称'RootP'.这是代码......
int main()
{
typedef struct Root
{
struct Root *child;
}*RootP;
RootP rootNode = malloc(sizeof(struct Root));
rootNode->child = NULL;
....
}
void mkdir(RootP rootNode, char param2[60], char pwd[200])
{
...
}
Run Code Online (Sandbox Code Playgroud) 我一直试图弄清楚这段错误已经有一段时间了,通过GDB运行它,当我输入'where'时会出现这种情况:
#0 0x00007ffff7a9bd4a in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff7a9dfb5 in malloc () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00000000004013d1 in CreateGenetic (cityStart=8, cityNum=9, cityWeights=0x7fffffffd270,
Genetic=0x604160) at main.c:175
#3 0x0000000000400cb9 in main (argc=2, argv=0x7fffffffdfd8) at main.c:87
Run Code Online (Sandbox Code Playgroud)
还尝试用-Wall -Wextra -O的参数进行编译,没有任何值得注意的事情.无论如何,这里是代码:
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <time.h>
typedef struct BruteForce *BF;
typedef struct GeneticAlgorithm *GA;
int Fact(int);
int CreateBrute(int, int, double[20][20], BF);
int Permutations(int, int, int*, int, double**, double[20][20], BF);
int CalcWeight(int, int, int*, double**, double [20][20], BF);
int CreateGenetic(int, int, double [20][20], …Run Code Online (Sandbox Code Playgroud)