Tag: 字符串

使用指针反转字符串

我正在尝试使用指针来反转一个字符串。当我尝试打印反向字符串而不是获得DCBA时,我只是作为BA出来?有人可以帮我这个吗? #include void reverse(char *); void main() { char str[5] = “ABCD”; reverse(str); } void reverse(char *str) { char *rev_str = str; char temp; while(*str) str++; –str; while(rev_str < str) { temp = *rev_str; *rev_str = *str; *str = temp; rev_str++; str–; } printf("reversed string is %s",str); }

sscanf函数更改另一个字符串的内容

我在使用sscanf读取字符串时遇到问题。 我已经愚弄了代码以专注于问题。 下面是整个代码中的一个函数,它应该打开一个文件并读取一些内容。 但是sscanf表现得很奇怪。 例如,我声明一个名为atm的字符串,其内容为’ATOM’ 。 在sscanf之前,它将此字符串作为ATOM打印,而在它之后为空。 可能是什么问题呢? 我认为它必须是分配问题,但我找不到它。 我尝试了其他主题的一些建议,比如用其他东西替换%s ,但它没有帮助。 void Get (struct protein p, int mode, int type) { FILE *fd; //input file char name[100]=”1CMA”; //array for input file name char string[600]; //the array where each line of the data file is stored when reading char atm[100]=”ATOM”; char begin[4]; int index1 =0; fd […]

如何用C中的另一个字符串替换一段const char *?

假设您有一个类似http://1.1.1.1/test.mpg的链接。 然后你想把它改成http://1.1.1.1/test.mkv 。 如何在C中以编程方式将“mpg”更改为“mkv”? 我尝试使用strtok和strcpy,但我不擅长C,所以我不能这样做。

从C中的文件读取长行时处理内存

首先,我知道这个问题与这个主题非常接近,但问题是措辞太差,以至于我甚至不确定它是否重复加上没有显示代码所以我认为它应该被正确地问。 我试图逐行读取文件,我需要在variable中特别存储一行。 我已经设法使用fgets很容易地完成了这个操作,但是要读取的行的大小和文件中的行数 仍然未知 。 我需要一种方法来正确地为variable分配内存,无论行的大小如何, 使用C而不是C ++ 。 到目前为止我的代码看起来像这样: allowedMemory = malloc(sizeof(char[1501])); // Checks if enough memory if (NULL == allowedMemory) { fprintf(stderr, “Not enough memory. \n”); exit(1); } else char* res; res = allowedMemory; while(fgets(res, 1500, file)) // Iterate until end of file { if (res == theLineIWant) // Using strcmp instead of […]

不为null终止C样式字符串

给一个字符串,比方说, char *str = “Hello,StackOverflow!” char newStr[30]; int l = strlen(str); for(int i =0 ; i<l ; i ++ ) newStr[i] = str[i]; printf("%s" , newStr); 现在,我们知道c字符串的最后一个字符必须是’\0′ ,因为这里我们没有明确地做同样的事情(在字符串newStr的最后一个索引处存储’\ 0’),这个程序应该崩溃,因为printf将找不到字符串的结尾。 但是我注意到它有时很好用,有时它不是。 可能是什么问题呢 ? 它实际上几乎每次都在工作。 是不应该崩溃或给出一些运行时错误? 在C ++中也会出现同样的情况吗?

在C中连接字符串

我想知道是否有办法为字符串添加值,而不是像1 + 1 = 2但像1 + 1 = 11。

如何在C中正确输入字符串

我目前正在学习C,所以我想创建一个程序,要求用户输入一个字符串并输出输入的字符数,代码编译得很好,当我只输入1个字符就可以了,但是当我输入2个或更多字符,无论我输入的字符数是多少,它总会说只有一个字符然后崩溃。 这是我的代码,我无法弄清楚出了什么问题。 int main(void) { int siz; char i[] = “”; printf(“Enter a string.\n”); scanf(“%s”, i); siz = sizeof(i)/sizeof(char); printf(“%d”, siz); getch(); return 0; } 我目前正在学习编程,所以如果有办法使用相同的scanf()函数,我会很感激,因为我还没有学会如何使用任何其他函数,可能无法理解它是如何工作的。

为什么我没有“分段错误”?

可能重复: 当我在数组末尾写入时,为什么不会出现分段错误? 此代码编译并运行,没有任何错误。 但是怎么样? #include int main (void) { int foo[2]; foo[8] = 4; /* How could this happen? */ printf(“%d\n”, foo[8]); return 0; } 我正在使用Arch Linux x86_64上的GCC 4.7.2进行编译。 gcc -Wall -o “main” “main.c”

为什么我们不能将字符串值赋给2d char数组?

#include int main() { char a[3][5]; int i; a[0][5]=”hai”; a[1][5]=”cool”; a[2][5]=”many”; for(i=0;i<3;i++) printf("%s \n",a[i]); return 0; } 为什么我们不能像这样分配字符串值,但它可以使用字符串函数分配?

C中数组中的终止NULL

我有一个简单的问题。 为什么有必要考虑字符数组(或简称字符串)中的终止空值而不是整数数组。 所以,当我想要一个字符串来容纳20个字符时,我需要声明char string[21]; 。 当我想声明一个包含5位数的整数数组时,则为int digits[5]; 足够。 这是什么原因?