我最近开始学习基本的 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) #include <stdio.h>
#define CUBE(x) (x * x * x)
int main() {
printf("%d", CUBE(4+5));
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以restrict只在函数定义中而不是在函数声明中包含关键字,如下所示:
void foo(char *bar);
void foo(char * restrict bar)
{
// do something
}
Run Code Online (Sandbox Code Playgroud)
由于foo只接受一个参数,因此任何指针别名都必须在foo. 调用函数的人不需要知道restrict修饰符。只在函数声明中省略关键字是否可以,就像 with 一样const?
这个程序叫做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) 假设我有以下代码:
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 指向的新内存块或空指针有效?
我正在尝试编写一个程序来查找 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) #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) 代码应该接受一个字符,并且应该检查它是否在“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语言代码,如下:
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 返回错误!那么,有人可以解释这个现象并解释理论吗?
argv[1]如果用户不输入任何内容,是否可以获取空字符串?如果用户不输入argv[1],我需要能够使用它,因为它是空字符串。
我尝试分配空字符串,argv[1]但它打印分段错误