我想在C中反轉一個字符串,並且遇到了一些定義目標字符串的問題。如何在C中自動定義字符串長度?
這裏是我的想法:(我是初學者,所以我的想法似乎在你的眼裏可笑...)
我定義未知長度的字符串數據類型,並指定一個字符串它。 (在我的情況下,它STR1)
我得到串1的字符串長度,並增加該值,並分配給一個整數。 (在我的情況下,+1是爲了補償字符串末尾的'\ 0')
使用此l整數來定義一個新字符串,它是目標字符串。 (str2在我的情況下)
使用for循環從str1的末尾複製到str2的開始,並在str2的末尾添加'\ 0'使其成爲一個字符串。
但是,當我嘗試在visual studio 2013中這樣做時,它不讓我編譯。
我已附加了錯誤信息和代碼。 (在錯誤消息中第15行是其中I定義STR2具有整數L)
我試圖只是把一個號碼(例如:100),其中整數L爲的地方,和代碼工作。
你可以讓我知道什麼是錯的定義字符串整型變量,而如何做到這一點,如果有一個在C方式,而不是僅僅定義一個足夠長的刺?
謝謝!
#include<stdio.h>
#include<string.h>
int main()
{
/* Reversing a string! */
int l; /* Length of str1 +1 (for the NULL character) */
char str1[] = "This is an unknown length string!";
l = strlen(str1) + 1;
char str2[l]; /* The destination string */
int i, j;
for (i = strlen(str1)-1,j=0; i < strlen(str1) && i >= 0; i--,j++)
str2[j] = str1[i];
str2[j] = '\0';
/* Display str1 and str2 */
printf("The content of str1: %s\n", str1);
printf("The content of str2: %s\n", str2);
return 0;
}
對於數組長度,使用'size_t'而不是'int'更便於攜帶。 – chux
不要忘記'免費(str2);'這種技術。誠然,在即將退出的計劃中,這並不重要,但最好從一開始就養成良好習慣,並在不再需要時釋放分配的記憶肯定是一種好習慣。 –