小编chq*_*lie的帖子

在 C 中,如果我不想使用字符串函数,我可以用什么来代替 strlen?

我最近开始学习基本的 C 语言,但我仍然不熟悉它,我开始做一些学习项目,我正在使用库函数,但我对其他方法感兴趣......

所以我有一个电子邮件验证,它工作正常,但我想在没有strlen,任何建议我可以做什么而不是做什么strlen

void mail(char e[]) {
    int count = 0;
    int countb = 0;
    int i, j;
    int t, t2;
    int p = 0;

    for (i = 0; i < strlen(e); i++) {
        if (e[i] == '@') {
            count++;
            t = i;
        }
    }
    if (count == 1) {
        for (j = 0; j < t; j++) {
            if (!(e[j] == '_' || e[j] == '.' || isalpha(e[j]) || isdigit(e[j]))) {
                p = -1; …
Run Code Online (Sandbox Code Playgroud)

c string strlen

1
推荐指数
1
解决办法
83
查看次数

这个 C 代码的输出是 49 但有人可以解释我怎么做吗?

#include <stdio.h>

#define CUBE(x) (x * x * x)

int main() {
    printf("%d", CUBE(4+5));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c c-preprocessor

1
推荐指数
2
解决办法
158
查看次数

`restrict` 关键字只能在函数定义中使用吗?

我想知道是否可以restrict只在函数定义中而不是在函数声明中包含关键字,如下所示:

void foo(char *bar);

void foo(char * restrict bar)
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

由于foo只接受一个参数,因此任何指针别名都必须在foo. 调用函数的人不需要知道restrict修饰符。只在函数声明中省略关键字是否可以,就像 with 一样const

c keyword

1
推荐指数
1
解决办法
79
查看次数

为什么这个程序打印一个空行?

这个程序叫做program.c. 当我运行时./program echo test,我希望程序打印test,即使命令是在子shell中运行的。为什么输出是空行?它与文件路径有关吗?当我尝试时,./program /bin/echo test我仍然得到一个空行输出。

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>

int function(char **argv) {
    execl("/bin/bash", "sh", "-c", *argv, argv, (char*)NULL);
}

int main(int argc, char **argv) {
    int return2;
    
    function(argv + 1);
}
Run Code Online (Sandbox Code Playgroud)

c echo execl

1
推荐指数
1
解决办法
68
查看次数

free() 是否适用于重新分配的指针?

假设我有以下代码:

int *ptr = (int*) malloc(0), *ptr2;
ptr2 = (int*) malloc(4 * sizeof(int));
*(ptr2 + 1) = 3;
ptr = ptr2;
free(ptr)
Run Code Online (Sandbox Code Playgroud)

调用 free(ptr) 是否对 ptr 指向的新内存块或空指针有效?

c memory

1
推荐指数
1
解决办法
157
查看次数

返回 c 中 3 维向量大小的函数

我正在尝试编写一个程序来查找 3D 矢量的大小。我需要使用一个函数来查找幅度(该程序还查找两个向量的点积,但我现在正在研究幅度部分)。该程序首先询问用户是否要求点积或幅度,当用户选择幅度时,它会要求提供 3 个向量值。然而,它返回了错误的东西。如果我输入1,2,3向量的分量,它将返回292044616。我认为问题出在我的函数调用中,但我现在确定它是什么。这是我的代码:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>

int main(void) {
    double find_magnitude(double v1, double v2, double v3);

    //double theta;
    int v1, v2, v3;// w1, w2, w3, mag, dot;
    char a;

    //dot = (v1 * w1) + (v2 * w2) + (v3 * w3);

    printf("Enter M/m or magnitude or D/d for the dot product and angle in degrees: ");
    scanf("%c", &a);

    if (a == 'M' || a == 'm') {
        printf("Enter in values …
Run Code Online (Sandbox Code Playgroud)

c function

1
推荐指数
1
解决办法
474
查看次数

删除元音的功能仅在边缘情况下失败

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

char *disemvowel(const char *str) {
    char vowels[] = { 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U' };
    int len = strlen(str), i, j, k = 0, flag;
    char *buf = malloc(sizeof(char) * len);
  
    for (i = 0; i < len; i++) {
        flag = 1;
        for (j = 0; j < 10; j++)
            if (str[i] == vowels[j])
                flag = 0;
        if (flag) {
            buf[k] = str[i];
            k++;
        }
    }
    buf[k] = …
Run Code Online (Sandbox Code Playgroud)

c

1
推荐指数
1
解决办法
84
查看次数

检查字母是否在“j”和“p”之间的条件

代码应该接受一个字符,并且应该检查它是否在“j”和“p”之间。

如果它在 'j' 和 'p' 之间,则应打印yes,否则应打印no

我尝试过对此做一些事情,但我得到的唯一想法是:

if (a=='j' || a=='k' || a=='k' || a=='l' || a=='m' || a=='n' || a=='o' || a=='p')
{
   printf("YES");
} 
else
{
   printf("NO");
}
Run Code Online (Sandbox Code Playgroud)

c

1
推荐指数
1
解决办法
221
查看次数

C语言中的字符串拼接,一个奇怪的现象

最近看到一段C语言代码,如下:

printf("%s\n", "1234" "qwer");
// output: 1234qwer

snprintf(buffer, sizeof(buffer), "bvcx" "mju");
// buffer data: bvcxmju
Run Code Online (Sandbox Code Playgroud)

老实说,这对我来说太神奇了。在此之前,我不知道字符串可以按"1234" "qwer"格式粘贴。为什么可以运行?然后,我尝试这个 'char a[] = "1234" "qwer"',gcc 返回错误!那么,有人可以解释这个现象并解释理论吗?

c

1
推荐指数
1
解决办法
69
查看次数

如果用户 C 未输入,则编辑 argv[1]

argv[1]如果用户不输入任何内容,是否可以获取空字符串?如果用户不输入argv[1],我需要能够使用它,因为它是空字符串。

我尝试分配空字符串,argv[1]但它打印分段错误

c

1
推荐指数
1
解决办法
230
查看次数

标签 统计

c ×10

c-preprocessor ×1

echo ×1

execl ×1

function ×1

keyword ×1

memory ×1

string ×1

strlen ×1