小编And*_*ing的帖子

在使用GCC编译C++时如何包含C11头文件?

在C++项目中,我使用的是包含一些C11标头的C库.它不会与GCC编译.看到这个简单的代码:

// main.cc
#include <stdatomic.h>

int main()
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

跑步gcc main.cc -lstdc++,抱怨:error: ‘_Atomic’ does not name a type.然而,clang main.cc -lstdc++工作就像一个魅力.我想知道是什么产生了影响,我怎么能用gcc编译它?

c++ gcc c11

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

strncpy的实现

我曾尝试实现字符串 n 复制功能。我已经成功了,但我试图优化我的代码,但它不起作用。

char *mystrncpy(char *dst, const char *src, size_t n)
{
   int i;
   char *temp;
   temp = dst;  
   for (i = 0; i < n; i++)
      *dst++ = *src++;
   return temp;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常。

但是下面的有一些问题。它只是srcn我传递的任何值返回字符串。

char *my_strncpy(char *dst, const char*src, size_t n)
{
   char *temp = dst;
   while ((*dst++ = *src++) && (--n));
   return temp;
}
Run Code Online (Sandbox Code Playgroud)

c linux string gcc

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

Head First C Program(文本搜索程序)

我对Head First C的以下程序有疑问.在主要功能下的书中,作者没有使用过search_for[strlen(search_for) - 1] = '\0';; 他的程序运行正常.但是,当我使用该程序的原始版本(按照书)时,它无法找到我输入的文本.我从github获得了以下版本(可以在字符串中找到文本),但我仍然无法理解为什么使用它.如果有人能解释我,我会非常感激.

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

char tracks[][80] = {
    "I left my heart in Harvad Med School",
    "Newark, Newark -  Wonderful town",
    "Dancing with a Dork",
    "From here to maternity",
    "The girl from Iwo Jima",
};

void find_track(char search_for[])
{
    int i;
    for (i = 0; i < 5; i++) {
        if (strstr(tracks[i], search_for))
            printf("Track %i: '%s'\n", i, tracks[i]);
    }
}

int main()
{
    char search_for[80];
    printf("Search for :");
    fgets(search_for, 80, …
Run Code Online (Sandbox Code Playgroud)

c

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

列表反向打印

列表的每个节点与数据一起保存后继节点的地址。这就是为什么递归可以很好地工作的原因,例如下面的示例:它接受输入,例如123456,然后将其打印为列表6 -> 5 -> 4 -> 3 -> 2 -> 1 -> NULL.

/* Structure types ----------------------------------------------*/

typedef int data;
struct list_element {
   int                     data;
   struct list_element     *next;
};
typedef struct list_element ELEM;
typedef ELEM *LINK;


/* Recursive list create and list print---------------*/

LINK create_list(int n) {
   if (n == 0) {
      return NULL;
   }
   else {
      LINK head = (LINK) malloc(sizeof(ELEM));
      head -> data = n % 10;
      head -> next = create_list(n / …
Run Code Online (Sandbox Code Playgroud)

c recursion linked-list

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

字符串在 C 中没有正确打印

在独立函数中使用 while 循环打印字符串时遇到问题。

我有以下代码:

#include <stdio.h>
int pword(char *);
int main() {
    char s[] = "Alice";
    pword(s);
    return 0;
}

int pword(char *s) {
    while(*s!='\0') {
        printf("%s", s);
        s++;
    }
    printf("\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是打印:Aliceliceicecee

c

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

条件限制在2个字符之间

我正在写需要限制使用输入字符只能从代码AH.那么大的H不应该被接受.我看到数字,我可以使用如下:

if (input == 0 - 9) return 1;
Run Code Online (Sandbox Code Playgroud)

但是,我怎么做,AH(char)?

c char

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

使用c ++的非常大的数字总和

我试图解决这个特殊问题:项目欧拉#16:

2 ^ 15 = 32768,其数字之和为3 + 2 + 7 + 6 + 8 = 26.
数字2 ^ 1000的数字之和是多少?

#include <iostream>
#include <cmath>
using namespace std;

int main()
{
   int num;
   cin >> num;
   long double n = pow(2, num);
   cout << fixed << n << endl;
   int sum = 0;
   while(n != 0.0)
   {
      sum = sum + fmod(n, 10);
      n = floor(n/10);
   }
   cout << sum << endl;
}
Run Code Online (Sandbox Code Playgroud)

用户输入为1000时的输出为:

1181
Run Code Online (Sandbox Code Playgroud)

然而,互联网提到了正确的答案,1366而不是1181我得到的.

c++

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

char定义所需的内存空间

char txt[20] = "Hello World!\0";
Run Code Online (Sandbox Code Playgroud)

上面的定义分配了多少字节?考虑一个char占用1个字节,一个int2字节.请注意,只有一个",\0最后.如何计算上面定义占用的很多字节?

c memory arrays char

-3
推荐指数
1
解决办法
1626
查看次数

如何在字符串中存储ascii值为0而不终止它?

将输入作为十六进制字符串,然后将其转换为C中的char字符串.十六进制字符串可以包含0x00,转换后转换为Ascii中的0.这会终止字符串.我必须将值存储在char字符串中,因为API使用它.
我的代码到目前为止:

int hex_to_int(unsigned char c) {
    int first =0;
    int second =0;
    int result=0;
    if(c>=97 && c<=102)
        c-=32;
    first=c / 16 - 3;
    second =c % 16;
    result = first*10 + second;
    if(result > 9) result--;
        return result;
}
unsigned char hex_to_ascii(unsigned char c, unsigned char d){
    unsigned char a='0';
    int high = hex_to_int(c) * 16;
    int low = hex_to_int(d);
    a= high+low;
    return a;
}
unsigned char* HextoString(unsigned char *st){
    int length = strlen((const char*)st);
    unsigned char* result=(unsigned char*)malloc(length/2+1); …
Run Code Online (Sandbox Code Playgroud)

c

-3
推荐指数
1
解决办法
272
查看次数

我正在制作一个c ++代码并且发生错误我不知道为什么

不知道我的问题在哪里.我尝试编译一次代码并且它有效.但是,我将它复制到一个新项目中以便修改它,只是颜色或等待的时间,它只适用于第一个程序.怎么了?我感到非常沮丧.使用此代码,我想绘制正弦函数.这是我的代码:

#include <bits/stdc++.h>

using namespace std;
int main()
{
    int t,n1,n2,res=0;
    cin>>t;
    vector<int> v1;
    vector<int> v2;
    while (t--) {
        cin>>n1>>n2;
        v1.push_back(n1);
        v2.push_back(n2);
    }
    for (int i=v1.size();i>0;i++) {
        bool state=binary_search(v2.begin(),v2.end(),v1[i-1]);
        if (state){
            v1.pop_back();
            res++;
        }
    }
    cout<<res<<endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

控制台错误

c++ console vector codeblocks

-4
推荐指数
1
解决办法
86
查看次数

标签 统计

c ×7

c++ ×3

char ×2

gcc ×2

arrays ×1

c11 ×1

codeblocks ×1

console ×1

linked-list ×1

linux ×1

memory ×1

recursion ×1

string ×1

vector ×1