标签: character-arrays

字符串数组中的NULL

如何删除字符串数组中的Null值

像{, - 2,3, - 4,+ 5,,66 ...}

我需要删除其间的空值并重新调整数组大小

  1. 我不想使用列表

  2. 我不想创建一个新的数组

如果可以使用简单的代码,请告诉我.谢谢.

c# character-arrays

3
推荐指数
2
解决办法
9702
查看次数

使用花括号初始化C char数组,是否可以省略空字节'\ 0'?

所以我读到了:

char pattern[] = "ould";

基本上是更简单的写作方式:

char pattern[] = { 'o', 'u', 'l', 'd', '\0' };

我知道null字符\0标志着字符串的结束,但如果我写它如下:

char pattern[] = { 'o', 'u', 'l', 'd'}; (没有\ 0)

它仍然编译.

哪里pattern没有\0原因问题,因为它似乎是编译没有警告(-Wall)

c character-arrays

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

C:为什么需要通过内存地址扫描数组元素?

(C初学者警报)

我想从用户读取一些整数并将它们存储在一个数组中.所以:

int main (void)
{

int i, num, cont = 0;
int arre[10];

for (int i=0;i<5;i++)
{
    scanf("%d", arre[i]);

etc.
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我在OSX上得到了分段故障11.如果我用Valgrind运行它,当我输入第一个整​​数时会出现问题,它告诉我:

==1610== Command: ./ArraysAndPointers
==1610== 
2
==1610== Use of uninitialised value of size 8
==1610==    at 0x18F0BA: __svfscanf_l (in /usr/lib/system/libsystem_c.dylib)
==1610==    by 0x18718A: scanf (in /usr/lib/system/libsystem_c.dylib)
==1610==    by 0x100000F2D: main (ArraysAndPointers.c:11)
==1610== 
==1610== Invalid write of size 4
==1610==    at 0x18F0BA: __svfscanf_l (in /usr/lib/system/libsystem_c.dylib)
==1610==    by 0x18718A: scanf (in /usr/lib/system/libsystem_c.dylib)
==1610==    by 0x100000F2D: main (ArraysAndPointers.c:11)
==1610==  Address 0x0 is …
Run Code Online (Sandbox Code Playgroud)

c arrays pointers pass-by-reference character-arrays

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

请用C中的字符数组/字符串解释这种行为

当我尝试某事时(我只是为了理解),我得到了这个.请解释一下这种行为:


第一次尝试:

void main()    
{  
    char src[] = "vinay";
    int i;
    // char name[5] = "test";
    char *name=  "abcde";
    printf("%s \n", name);
    if (*(name+5) == '\0')
        printf("6th char is null\n");
    strcpy(name,src);
    printf("printcheck \n");
    for (i=0 ; i <6 ; i++)  
    {
        printf("%c \n", *(name+i));
    }
    printf("%s \n",name);    
}
Run Code Online (Sandbox Code Playgroud)

输出:

abcde 
6th char is null
zsh: 16644 segmentation fault (core dumped)  a.out
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

void main()
{
    char src[] = "vinay";
    int i;
    char name[] = "pqrst";
    //char *name=  "abcde";
    printf("%s \n", …
Run Code Online (Sandbox Code Playgroud)

c string character-arrays

2
推荐指数
3
解决办法
531
查看次数

如何从C中的文件的双引号之间读取多个单词

我正在尝试从文件中读取字符串并将其读取到结构中,但是当我遇到两个或多个单词的字符串时,我似乎尝试的所有操作均不起作用

文件中的数据

“ K300”“键盘”“美国通用” 150.00 50

“ R576”“ 16英寸轮辋”“ Toyota Verossa” 800.00 48

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

typedef struct partInfo {
  char number[6];
  char name[20];
  char description[30];
  double price;
  int qty;
}Part;

int main() {

char num[6], name[20], desc[30];
int i=0;
int q;
double p;
char ch;


FILE * in = fopen("input.txt", "r");

Part part1;
fscanf(in, " %[^ ]s", &num);
printf("%s\n", num);

fscanf(in, " %[^ ]s", &name);
printf("%s\n", name);

fscanf(in, " %[^ ]s", &desc); //right here only copy …
Run Code Online (Sandbox Code Playgroud)

c struct scanf c-strings character-arrays

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

使用C#使用字符数组修剪字符串

在字符串对象上使用Trim()方法时,可以向其传递一个字符数组,它将从字符串中删除这些字符,例如:

string strDOB = "1975-12-23     ";
MessageBox.Show(strDOB.Substring(2).Trim("- ".ToCharArray()));
Run Code Online (Sandbox Code Playgroud)

结果是"75-12-23"而不是预期的结果:"751223",这是为什么?

额外的问题:与这一行相比,哪一个会有更多的开销(它完全相同):

strDOB.Substring(2).Trim().Replace("-", "");
Run Code Online (Sandbox Code Playgroud)

c# string character-arrays

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

atoi在一个有很多整数的字符数组上

我有一个代码,其中字符数组由整数填充(转换为char数组),并由另一个函数读取,该函数将其重新转换回整数.我使用以下函数来转换为char数组:

char data[64];
int a = 10;
std::string str = boost::lexical_cast<std::string>(a);
memcpy(data + 8*k,str.c_str(),sizeof(str.c_str()));   //k varies from 0 to 7
Run Code Online (Sandbox Code Playgroud)

并使用以下方法重新转换回字符:

char temp[8];
memcpy(temp,data+8*k,8);
int a = atoi(temp);
Run Code Online (Sandbox Code Playgroud)

这一般工作正常,但是当我尝试将其作为涉及qt(ver 4.7)的项目的一部分时,它编译得很好并且在尝试使用memcpy()读取时给出了分段错误.请注意,分段故障仅在读取循环中发生,而不是在写入数据时发生.我不知道为什么会这样,但我希望通过任何方法完成它.

那么,还有其他任何我可以使用的函数可以接受字符数组,第一位和最后一位并将其转换为整数.然后我根本不必使用memcpy().我想要做的是这样的事情:

new_atoi(data,8*k,8*(k+1)); // k varies from 0 to 7
Run Code Online (Sandbox Code Playgroud)

提前致谢.

string qt pointers memcpy character-arrays

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

数组和字符串

我有一个类型char和字符串数组,我将从键盘中介绍.任何人都可以告诉我如何在char数组中引入字符串的每个字符?

java arrays string character-arrays

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

字符数组分配

在C++中,如果我这样做:

char myArray[] = {'1','2','3','4','5','6','7','8','9'}; 
Run Code Online (Sandbox Code Playgroud)

这会分配10个空格吗?最后一个元素是'/ 0'?

关于什么:

char myArray[9] = {'1','2','3','4','5','6','7','8','9'}; 
Run Code Online (Sandbox Code Playgroud)

在这种情况下我只分配了9个空格吗?这不好吗?

最后,当我这样做时会发生什么:

char myArray[10] = {'1','2','3','4','5','6','7','8','9','/0'}; 
Run Code Online (Sandbox Code Playgroud)

c++ character-arrays

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

打印字符数组的输出是什么意思?

我现在正从C转到Java,我正在学习一些关于Strings的教程.在教程中的某一点上,他们展示了从字符数组中实例化一个新字符串然后打印字符串.我跟着,但我想打印字符数组和字符串,所以我尝试了这个:

class Whatever {
    public static void main(String args[]) {
        char[] hello = { 'h', 'e', 'l', 'l', 'o', '.'};
        String hello_str = new String(hello);
        System.out.println(hello + " " + hello_str);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的输出是这样的:

[C@9304b1 hello.
Run Code Online (Sandbox Code Playgroud)

显然,这不是您在Java中打印字符数组的方式.但是我想知道我是不是有垃圾?我在某个网站上看到打印一个字符数组会给你一个地址,但这对我来说并不像是一个地址......我在网上找不到很多关于它的信息.

那么,我刚刚打印了什么?
和奖金问题:你如何在java中正确打印字符数组?

java string character-arrays

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

标签 统计

character-arrays ×10

string ×5

c ×4

arrays ×2

c# ×2

java ×2

pointers ×2

c++ ×1

c-strings ×1

memcpy ×1

pass-by-reference ×1

qt ×1

scanf ×1

struct ×1