小编Jab*_*cky的帖子

当我用char指针复制字符串时返回null

我尝试用char指针复制字符串,程序没有给我什么,我不知道......

请让我知道我的代码问题.

int main() {
    char *a = "helloworld.txt";
    char *b = malloc( sizeof(char) * 20 );

    while(*a!='\0') {
        *b++=*a++;
    }
    *b = '.';
    b++;
    *b = '\0';

    printf("string: %s\n", b);
}
Run Code Online (Sandbox Code Playgroud)

结果是:

string: 
Run Code Online (Sandbox Code Playgroud)

c

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

存储类默认全局变量(gcc编译器)?

在C,(GCC编译器)中,全局变量的默认存储类是什么?

让我分享一个代码,例如:

int i; 

void f()
{ --statements--}

main()
{ --- set of statements--- }
Run Code Online (Sandbox Code Playgroud)

如果我说变量i是静态的而不是外部的,我是否正确?

c variables gcc storage-class-specifier

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

通过原始指针访问int的向量元素

我想知道下面的代码是否合法.

基本上我有一个std::vector<int>,我有一个处理ints 数组的遗留函数.由于a的元素std::vector总是连续的,所以代码应该始终有效(它实际上适用于我的实现),但它对我来说似乎仍然是一个黑客.

#include <vector>
#include <iostream>

void LecagyFunction(int *data, int length)
{
  for (int i = 0; i < length; i++)
    std::cout << data[i] << std::endl;
}

int main()
{
  std::vector<int> vector;
  vector.push_back(5);
  vector.push_back(4);
  vector.push_back(3);
  LecagyFunction(&vector[0], vector.size());
}
Run Code Online (Sandbox Code Playgroud)

预期的输出是:

5
4
3
Run Code Online (Sandbox Code Playgroud)

c++ vector stdvector

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

指针的生命周期

我正在观看使用Herb Sutter的Symbio C++研讨会视频 - (Thrill of a)Lifetime 20.6.2016,https://www.youtube.com/watch? v = 7b75rcHg7z0 & t = 917s

以下代码是从视频11 :: 24中编写的.当示波器熄灭时,p1,p2和p3指针必须无效.尝试取消引用指针时必须出错.

我正在使用在线https://wandbox.org/环境.gcc和clang都给出了以下结果.哪个一定是错的.

有人可以在Visual Stdio上检查相同的代码.

谢谢

#include <iostream>
using namespace std;
#include <vector>
#include <memory>
#include <cstdio>
#include <cassert>
#include <string>
#include <iterator>
#include <algorithm>
#include <array>

int* p1 = nullptr; int* p2 = nullptr; int* p3 = nullptr; 

int main() {
    {
        int i = 1;
        struct MyStruct { char a; int i; char c;} s = {'a', 2, 'c'}; …
Run Code Online (Sandbox Code Playgroud)

c++

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

在c ++中检查文件是否只读

我想在Windows系统的c ++中检查.ini文件是否只读

例如:

if(file == readonly){
  //Do this
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已尝试过这个并且它有效:

ofstream ofs(filename); //test to see if the file successfully opened for writing or not
Run Code Online (Sandbox Code Playgroud)

但结果它将删除.ini文件并将文件留空

PS:1.它不是重复的2.我在互联网上搜索过,我发现了一些可能有用的例子,但结果却没有按照他们的意愿进行编译.

c++ windows winapi readonly

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

C中每行具有不同大小的二维数组

我想知道是否可以在 C 中创建一个具有不同大小线的二维数组。

我知道二维数组是一个存储其他数组的数组。但是如果数组的大小不同呢?像这样的东西(“T”是数组的可用位置)

   0  1  2  3  4
0  T  T  
1  T  T  T  T  T
2  T  T  T
3  T  T  T  T  
Run Code Online (Sandbox Code Playgroud)

如果可能,怎么做?就像普通的二维数组一样?

c jagged-arrays

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

计算字符串中最常见的字符

我有一个复杂的C程序,我只想写一个函数,它获取一个字符串作为参数.

int most_frequent(char *string)
Run Code Online (Sandbox Code Playgroud)

该函数必须返回字符串中最常用字符的编号.我试过这样的事情,但这是不正确的我认为:

 int most_frequent(char *string){
     int i, lenght;
     lenght=strlen(string);
     int max=0, x=0;
     for(i=0;i<lenght;i++)
     {
         if(string[i]==string[i++])
         {
             x++;
         }
         if(max<x)
             max=x;
     }
     return max;
 }
Run Code Online (Sandbox Code Playgroud)

例如:"溢出" - 2"十一" - 3

c string function

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

如何在C中输入由新行分隔的两个字符串

如何输入由新行分隔的2个字符串?

我的问题:

首先,我需要提供需要多少字符串,然后我需要获取这些字符串然后显示它.

我试过这个:

码:

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

int main()
{

    int n,i = 0;
    scanf("%d", &n);
    char arr[n][100];
    for(int i = 0; i < n; i++)
    {
        scanf("%[^\n]s", arr[i]);
    }

    for(int i = 0; i < n; i++)
    {
        printf("%s\n", arr[i]);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的意见是:

2 I am
Aravind
Run Code Online (Sandbox Code Playgroud)

我的输出是:

I am
þ
Run Code Online (Sandbox Code Playgroud)

第一行我得到了正确但第二行显示了一些垃圾值.帮我解决这个问题.

c arrays string multidimensional-array

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

C 中的嵌套循环练习 - 我可以写得更好吗?

练习是:

使用嵌套循环产生以下模式

A
BC
DEF
GHIJ
KLMNO
PQRSTU
Run Code Online (Sandbox Code Playgroud)

我写的是这样的:

#include <stdio.h>

int main(void)
{
    char ch[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int x,y;
    int min,max,i;
    min=max=0;
    i=1;
    for(x=0;x<6;x++)
    {
        for(y=min;y<=max;y++){
            printf("%c",ch[y]);
        }
        min=max+1;
        max+=i+1;
        i++;
        printf("\n");
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有没有一种我想不到的更简单、更好的方法?

c loops

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

在未声明的数据变量上使用数据指针

我有一个具有以下原型的函数(我无法修改):

void writeData(uint16_t add, uint16_t *data);
Run Code Online (Sandbox Code Playgroud)

*data应该指向一个uint16_t变量。所以在我的代码中,我像这样使用它,例如:

uint16_t dataValue;
dataValue = 55;
writeData(0, &dataValue);
Run Code Online (Sandbox Code Playgroud)

有没有办法简化上面的代码,以便在writeData不声明变量的情况下使用函数dataValue?像这样,但使用正确的语法:

writeData(0, syntaxInCWhichPointsToTheAdressOfTheValueInsideBrackets{55}); 
Run Code Online (Sandbox Code Playgroud)

如果不是,我们可以修改操作符同一指令行中指向的值&吗?

writeData(0, &dataValue{dataValue=55}); // something like this but with correct syntax
Run Code Online (Sandbox Code Playgroud)

我不想封装writeData在其他函数中。

c pointers

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